Ⅰ javamail怎么发送群组邮件
最近公司的项目用到了Java Mail来发送注册邮件,不过,开发的时候都是使用封装好的JAR,以前也不是很了解Java Mail的使用原理。网上很多代码都是只有一部分,看一看也跑不起来,今天正好有时间,自己写了一个实现,放在了自己的工具JAR里。闲话不多说,我的项目是使用Gradle构建的,依赖的引用如下:
[plain] view plain
//JavaMail
compile('javax.mail:mail:1.4.7')
相当于Maven的groupId,artifactId,version
构建后应该引用了两个JAR:。如果第二个JAR没有的话,大家可以去Maven库找一下,就不多讲述了。
实现的源码如下,一般直接拿来就可以用了~
[java] view plain
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;
/**
* Java Mail 工具类
*
* @author XueQi
* @version 1.0
*
*/
public class MailUtils {
private static String host;
private static String username;
private static String password;
private static String from;
private static String nick;
static {
try {
// Test Data
host = "smtp.163.com";
username = "邮箱用户名";
password = "邮箱密码";
from = "[email protected]";
nick = "测试admin";
// nick + from 组成邮箱的发件人信息
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 发送邮件
*
* @param to
* 收件人列表,以","分割
* @param subject
* 标题
* @param body
* 内容
* @param filepath
* 附件列表,无附件传递null
* @return
* @throws MessagingException
* @throws AddressException
* @throws UnsupportedEncodingException
*/
public static boolean sendMail(String to, String subject, String body,
List<String> filepath) throws AddressException, MessagingException,
UnsupportedEncodingException {
// 参数修饰
if (body == null) {
body = "";
}
if (subject == null) {
subject = "无主题";
}
// 创建Properties对象
Properties props = System.getProperties();
// 创建信件服务器
props.put("mail.smtp.host", host);
props.put("mail.smtp.auth", "true"); // 通过验证
// 得到默认的对话对象
Session session = Session.getDefaultInstance(props, null);
// 创建一个消息,并初始化该消息的各项元素
MimeMessage msg = new MimeMessage(session);
nick = MimeUtility.encodeText(nick);
msg.setFrom(new InternetAddress(nick + "<" + from + ">"));
// 创建收件人列表
if (to != null && to.trim().length() > 0) {
String[] arr = to.split(",");
int receiverCount = arr.length;
if (receiverCount > 0) {
InternetAddress[] address = new InternetAddress[receiverCount];
for (int i = 0; i < receiverCount; i++) {
address[i] = new InternetAddress(arr[i]);
}
msg.addRecipients(Message.RecipientType.TO, address);
msg.setSubject(subject);
// 后面的BodyPart将加入到此处创建的Multipart中
Multipart mp = new MimeMultipart();
// 附件操作
if (filepath != null && filepath.size() > 0) {
for (String filename : filepath) {
MimeBodyPart mbp = new MimeBodyPart();
// 得到数据源
FileDataSource fds = new FileDataSource(filename);
// 得到附件本身并至入BodyPart
mbp.setDataHandler(new DataHandler(fds));
// 得到文件名同样至入BodyPart
mbp.setFileName(fds.getName());
mp.addBodyPart(mbp);
}
MimeBodyPart mbp = new MimeBodyPart();
mbp.setText(body);
mp.addBodyPart(mbp);
// 移走集合中的所有元素
filepath.clear();
// Multipart加入到信件
msg.setContent(mp);
} else {
// 设置邮件正文
msg.setText(body);
}
// 设置信件头的发送日期
msg.setSentDate(new Date());
msg.saveChanges();
// 发送信件
Transport transport = session.getTransport("smtp");
transport.connect(host, username, password);
transport.sendMessage(msg,
msg.getRecipients(Message.RecipientType.TO));
transport.close();
return true;
} else {
System.out.println("None receiver!");
return false;
}
} else {
System.out.println("None receiver!");
return false;
}
}
public static void main(String[] args) throws AddressException,
UnsupportedEncodingException, MessagingException {
List<String> filepath = new ArrayList<>();
filepath.add("E:\\Resources\\Development Test\\AuctionServer\\src\\main\\java\\com\\auction\\\\IBaseDAO.java");
filepath.add("E:\\Resources\\Development Test\\AuctionServer\\src\\main\\java\\com\\auction\\\\IMemcacheDAO.java");
sendMail("000000@qq.com,[email protected]", "注册信息邮件", "注册邮件,有附件",
filepath);
}
}
Ⅱ java程序自动发送邮件,使用的SMTP协议,如何能将发件人改成中文昵称而不是注册的那些字母。部分程序如下
String mailTo = "**@163.com";
String mailTo = "张三<**@163.com>";
Ⅲ 有无大佬用过simplejavamail,java项目写邮件的。
packagecom.openwan.util;
importorg.simplejavamail.email.Email;
importorg.simplejavamail.email.EmailBuilder;
importorg.simplejavamail.mailer.MailerBuilder;
publicclassSimpleJavaMail{
publicstaticvoidmain(String[]args){
Emailemail=EmailBuilder.startingBlank()
磨凯.from("发件人名称","发件人邮箱")
.to("名字","收瞎颂唤件人地址")
.to("名字","收件人地址")
.withSubject("我是邮箱标题!")
.withPlainText("邮件内容")
.buildEmail();
//开启邮箱服务,POP3/SMTP/IMAP
樱改MailerBuilder
.withSMTPServer("smtp.163.com",25,
"发件人邮箱","发件人smtp服务口令密码")
.buildMailer()
.sendMail(email);
}
}
//pom文件引入mail
<dependency>
<groupId>org.simplejavamail</groupId>
<artifactId>simple-java-mail</artifactId>
<version>5.0.1</version>
</dependency>
兄弟记得给分呦~
Ⅳ javamail发送邮件报错,求指教!
发邮件之前销旅加上
MailcapCommandMap mc = (MailcapCommandMap) CommandMap.getDefaultCommandMap();
mc.addMailcap("text/html;; x-java-content-handler=com.sun.mail.handlers.text_html");
mc.addMailcap("text/念春xml;; x-java-content-handler=com.sun.mail.handlers.text_xml");
mc.addMailcap("text/亏高凳plain;; x-java-content-handler=com.sun.mail.handlers.text_plain");
mc.addMailcap("multipart/*;; x-java-content-handler=com.sun.mail.handlers.multipart_mixed");
mc.addMailcap("message/rfc822;; x-java-content-handler=com.sun.mail.handlers.message_rfc822");
CommandMap.setDefaultCommandMap(mc);
设置邮件接收协议
Ⅳ java如何发送匿名邮件
任何一个人都可以连接到SMTP服务器发送邮件,SMTP服袜神务器大部分不检查信息的真实性.你可以随便写你喜欢毕册用的名字,
你手好宏也可能会收到来自[email protected]的邮件,请你去参加白宫前草坪上的聚会.
也就是说,发件人的名字是你自己写进去的.你可以随便写.发件人的地址也是随便写的.所以你自己写的邮件程序,就相当于匿名的.不过你可能发不出去,另外一边的POP3服务器可能会把你的邮件当成垃圾邮件,直接过虑掉.
Ⅵ javamail能隐藏发件人地址或者不要发件人吗
qq邮箱发送邮件可以隐藏发件人的信息。具体做法如下:
我们在用QQ邮箱给人写信的时候,前面一看就知道是自己的QQ号码了,如果一些人不怀好意想加我们为QQ好友,那更令人头疼。那么要如何做,才能让你在用QQ邮箱写邮件的时候,不让对方看到你的QQ号码呢。
1、登陆QQ,确保州差QQ登陆成功。
2、点击QQ邮箱图标,进入你的QQ邮箱首页。
3、点击写信,随便找一个好友给她写一封乱七八糟的信,当然,只是为了好玩,但不要写过分的话,否则可能真的会吓坏她。
4、写好了后,把界面往下拉,就会看到下面有一个发件人的简孝信息,也会看到发件人的信息旁边有一个向下拉的箭头,我们点击一下。
5、点击出来后,就会有一个以你QQ号开头的邮箱地址,还有一个就是非QQ号码出现的邮箱了,点击一下非QQ号码出现拦迹稿的那个邮箱,那么你就是以这个邮箱地址发出去了邮件哦
6、这个QQ邮箱是foxmail名称,当然,你得事先要把这个邮箱开始,并点击开始使用,才可以在这里选择使用的。
Ⅶ javamail发送邮件需要发件人和验证人一致才能发送,那不是只能用一个邮箱发送
跟随屏幕指示完成设置。(要创建一个 Palm 帐户厅雹,森伏码你需要填入一个电子邮箱) 例如,当你读完一封邮件,做个后退手势就此哪能关闭 邮件并且回到你的收件箱。
Ⅷ 网易邮箱如何设置显示发件人姓名或昵称
网易邮箱如何设置族派显示发件人姓名或昵称呢?下面我来教大家。
首先,我们打开我们电脑上面的浏览器,然后输入网易邮箱进行搜索,弹出的界面,我们点击网易邮箱网站;
弹出的界面,我们输入账号和密码,然后点击咐液登录;
进入界面后,我们点击通讯录;
进入之后,我们就可以看到很多联系人了,我们选择其中一个,然后点击右边的编辑;
弹出的界面,我们输入姓名,然后点击确定就可以了,之后这个人发来的邮件衡穗物就会显示我们更改的姓名了。
Ⅸ 别人收到我发的邮件,发件人怎么没有我的昵称
如果您希望收件箱里显示通讯录里设置的姓名培稿锋,设置方式如下:
一、登录邮箱后,点击右上角“设置”-“参数设置”-“邮件列表”-“发件人显示”中配晌选择“优先显示通讯录中的备注名”,点击“确定”。
二、打开通讯敬态录,点击要修改联系人的“名字”或“邮件地址”,再点击上方“编辑联系人”,输入对方发邮件来时所显示的姓名,点击“保存”。
这样,收件箱里发件人的名字就显示您所编辑的名字了。
Ⅹ 邮件发件人显示真名怎么办
发邮件时要让对方老庆斗看到自己的真实姓名,可以在邮箱里设置一下账户昵称,把昵称改成个人的真实姓名即可,如QQ邮箱的设置方法如下:
在电脑上登录好的QQ主界面上方,点击QQ邮箱的图标;
进侍磨入QQ邮箱,点击左上方邮箱标志旁边的“设置”按钮;
打开“邮箱设置”界面,在导航栏里点击“账户”,在“默认账户昵称”差伍一栏里,输入个人的真实姓名,然后点击“保存更改”,这样一来,在个人发出的所有邮件,发件人里都会显示个人的真实姓名,对方自然就能看到了。