java发送QQ群邮件,Java使用腾讯企业邮箱 、javamail 、 SSL 发送邮件/群发

引入相关依赖:

javax.mail

mail

1.4.7

commons-io

commons-io

2.4

如果使用spring的发邮件,还需要添加依赖:

org.springframework

spring-context-support

${spring.version}

登录腾讯企业邮箱:

b7d69d62f5410cedd7c34f2c837e63f0.png

生成一个授权密码,后面会用到.

下面SSL等 腾讯QQ和企业邮箱默认是开启的

POP3/SMTP协议

接收邮件服务器:pop.exmail.qq.com ,使用SSL,端口号995

发送邮件服务器:smtp.exmail.qq.com ,使用SSL,端口号465

海外用户可使用以下服务器

接收邮件服务器:hwpop.exmail.qq.com ,使用SSL,端口号995

发送邮件服务器:hwsmtp.exmail.qq.com ,使用SSL,端口号465

IMAP协议

接收邮件服务器:imap.exmail.qq.com ,使用SSL,端口号993

发送邮件服务器:smtp.exmail.qq.com ,使用SSL,端口号465

海外用户可使用以下服务器

接收邮件服务器:hwimap.exmail.qq.com ,使用SSL,端口号993

发送邮件服务器:hwsmtp.exmail.qq.com ,使用SSL,端口号465

QQ邮箱

smtp.qq.com

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.com");

//端口

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.cn", "生成的客户端专用密码");

return pa;

}

});

//设置session的调试模式,发布时取消

s.setDebug(true);

MimeMessage mimeMessage = new MimeMessage(s);

try {

mimeMessage.setFrom(new InternetAddress(kf@zz1x.cn));

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都是调用方传过来的

最后测试的效果:

f62ad54467da8b7fb824dc1e70184080.png

如果要群发的话,只需要更改

//单个人

// 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.com,xxx@xxx.com";

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.com,17258232@qq.com

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值