admin管理员组文章数量:1559072
引入相关依赖:
javax.mail
mail
1.4.7
commons-io
commons-io
2.4
如果使用spring的发邮件,还需要添加依赖:
org.springframework
spring-context-support
${spring.version}
登录腾讯企业邮箱:
生成一个授权密码,后面会用到.
下面ssl等 腾讯qq和企业邮箱默认是开启的
pop3/smtp协议
接收邮件服务器:pop.exmail.qq ,使用ssl,端口号995
发送邮件服务器:smtp.exmail.qq ,使用ssl,端口号465
海外用户可使用以下服务器
接收邮件服务器:hwpop.exmail.qq ,使用ssl,端口号995
发送邮件服务器:hwsmtp.exmail.qq ,使用ssl,端口号465
imap协议
接收邮件服务器:imap.exmail.qq ,使用ssl,端口号993
发送邮件服务器:smtp.exmail.qq ,使用ssl,端口号465
海外用户可使用以下服务器
接收邮件服务器:hwimap.exmail.qq ,使用ssl,端口号993
发送邮件服务器:hwsmtp.exmail.qq ,使用ssl,端口号465
qq邮箱
smtp.qq
587
主要的一个方法
/**
* 发送邮件
*
* @param content 内容
*/
public static void sendmail(string host, string port, string protocol,string auth,string sendmailaccount,
string sendmailpassword, string receivemailaccount, string subject, string content) {
properties prop = new properties();
//协议
prop.setproperty("mail.transport.protocol", "smtp");
//服务器
prop.setproperty("mail.smtp.host", "smtp.exmail.qq");
//端口
prop.setproperty("mail.smtp.port","465");
//使用smtp身份验证
prop.setproperty("mail.smtp.auth","true");
//企业邮箱必须要ssl
mailsslsocketfactory sf = null;
try {
sf = new mailsslsocketfactory();
sf.settrustallhosts(true);
} catch (generalsecurityexception e1) {
e1.printstacktrace();
}
prop.put("mail.smtp.ssl.enable", "true");
prop.put("mail.smtp.ssl.socketfactory", sf);
//获取session对象
session s = session.getdefaultinstance(prop, new authenticator() {
//此访求返回用户和密码的对象
@override
protected passwordauthentication getpasswordauthentication() {
passwordauthentication pa = new passwordauthentication("kf@zz1x", "生成的客户端专用密码");
return pa;
}
});
//设置session的调试模式,发布时取消
s.setdebug(true);
mimemessage mimemessage = new mimemessage(s);
try {
mimemessage.setfrom(new internetaddress(kf@zz1x));
mimemessage.addrecipient(message.recipienttype.to, new internetaddress("接受邮件的邮箱"));
//设置主题
mimemessage.setsubject("subject");//邮件标题
mimemessage.setsentdate("new date()");
//设置内容
mimemessage.settext("content");//邮件内容
mimemessage.savechanges();
//发送
transport.send(mimemessage);
} catch (messagingexception e) {
e.printstacktrace();
}
}
这里是一个方法写成的公共的。host、port都是调用方传过来的
最后测试的效果:
如果要群发的话,只需要更改
//单个人
// mimemessage.addrecipient(message.recipienttype.to, new internetaddress(receivemailaccount));
变成多人
mimemessage.addrecipients(message.recipienttype.to,addressmails(receivemailaccount));
public static internetaddress[] addressmails(string receivemails) {
//多个接收账号
// string str = "xxx@xxx,xxx@xxx";
internetaddress[] address = null;
try {
list list = new arraylist();//不能使用string类型的类型,这样只能发送一个收件人
string[] median = receivemails.split(",");//对输入的多个邮件进行逗号分割
for (int i = 0; i < median.length; i ) {
list.add(new internetaddress(median[i]));
}
address = (internetaddress[]) list.toarray(new internetaddress[list.size()]);
} catch (addressexception e) {
e.printstacktrace();
}
return address;
}
参数receivemails为string字符串以逗号隔开,比如:1195564387@qq,17258232@qq
九游会下载的版权声明:本文标题:java使用腾讯企业邮箱 、javamail 、 ssl 发送邮件群发 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1727422238a1113709.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论