Java 基于JavaMail实现QQ邮件发送(也可实现群发)
2017-06-27 20:01
776 查看
1.开启SMTP服务
在 QQ 邮箱里的 设置->账户里开启
SMTP 服务
![](https://oscdn.geek-share.com/Uploads/Images/Content/201706/aaa3bf421a7cd4f63726c24fb990c9ab)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201706/e841d20458d45afe0086ec3749718c66)
注意开启完之后,QQ 邮箱会生成一个授权码,在代码里连接邮箱使用这个授权码而不是原始的邮箱密码,这样可以避免使用明文密码。
2.下载依赖的 jar 包
官方下载地址 http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-eeplat-419426.html#javamail-1.4.7-oth-JPR。
解压完之后,通常我们只需要其中的mail.jar,把它加到 工程的依赖包中。
3.完整代码示例
import java.security.GeneralSecurityException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Properties;
import javax.mail.Address;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import com.sun.mail.util.MailSSLSocketFactory;
public class MailTool {
public static void main(String[] args) throws MessagingException, GeneralSecurityException {
Properties props = new Properties();
// 开启debug调试
props.setProperty("mail.debug", "true");
// 发送服务器需要身份验证
props.setProperty("mail.smtp.auth", "true");
// 设置邮件服务器主机名
props.setProperty("mail.host", "smtp.qq.com");
// 发送邮件协议名称
props.setProperty("mail.transport.protocol", "smtp");
//开启了 SSL 加密
MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
props.put("mail.smtp.ssl.enable", "true");
props.put("mail.smtp.ssl.socketFactory", sf);
Session session = Session.getInstance(props);
Message msg = new MimeMessage(session);
msg.setSubject("seenews 错误");
StringBuilder builder = new StringBuilder();
builder.append("url = " + "http://blog.csdn.net/never_cxb/article/details/50524571");
builder.append("\n页面爬虫错误");
builder.append("\n时间 " + new Date());
msg.setText(builder.toString());
msg.setFrom(new InternetAddress("发送人的邮箱地址"));//**发送人的邮箱地址**
Transport transport = session.getTransport();
transport.connect("smtp.qq.com","发送人的邮箱地址","你的邮箱授权码");
List<String> list=new ArrayList<>();
//实现群发,下面的方法也是可以实现群发,但是不太理想
transport.sendMessage(msg, InternetAddress.parse("3306907224@qq.com,269056581@qq.com"));
/*transport.sendMessage(msg, new Address[] {
new InternetAddress("3306907224@qq.com"),
new InternetAddress("269056581@qq.com"),
new InternetAddress("zhengmm@gz2000.net")
}
);*/
transport.close();
}
}
参看文章:
http://blog.csdn.net/ghsau/article/details/17839983
http://blog.csdn.net/never_cxb/article/details/50543289
在 QQ 邮箱里的 设置->账户里开启
SMTP 服务
注意开启完之后,QQ 邮箱会生成一个授权码,在代码里连接邮箱使用这个授权码而不是原始的邮箱密码,这样可以避免使用明文密码。
2.下载依赖的 jar 包
官方下载地址 http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-eeplat-419426.html#javamail-1.4.7-oth-JPR。
解压完之后,通常我们只需要其中的mail.jar,把它加到 工程的依赖包中。
3.完整代码示例
import java.security.GeneralSecurityException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Properties;
import javax.mail.Address;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import com.sun.mail.util.MailSSLSocketFactory;
public class MailTool {
public static void main(String[] args) throws MessagingException, GeneralSecurityException {
Properties props = new Properties();
// 开启debug调试
props.setProperty("mail.debug", "true");
// 发送服务器需要身份验证
props.setProperty("mail.smtp.auth", "true");
// 设置邮件服务器主机名
props.setProperty("mail.host", "smtp.qq.com");
// 发送邮件协议名称
props.setProperty("mail.transport.protocol", "smtp");
//开启了 SSL 加密
MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
props.put("mail.smtp.ssl.enable", "true");
props.put("mail.smtp.ssl.socketFactory", sf);
Session session = Session.getInstance(props);
Message msg = new MimeMessage(session);
msg.setSubject("seenews 错误");
StringBuilder builder = new StringBuilder();
builder.append("url = " + "http://blog.csdn.net/never_cxb/article/details/50524571");
builder.append("\n页面爬虫错误");
builder.append("\n时间 " + new Date());
msg.setText(builder.toString());
msg.setFrom(new InternetAddress("发送人的邮箱地址"));//**发送人的邮箱地址**
Transport transport = session.getTransport();
transport.connect("smtp.qq.com","发送人的邮箱地址","你的邮箱授权码");
List<String> list=new ArrayList<>();
//实现群发,下面的方法也是可以实现群发,但是不太理想
transport.sendMessage(msg, InternetAddress.parse("3306907224@qq.com,269056581@qq.com"));
/*transport.sendMessage(msg, new Address[] {
new InternetAddress("3306907224@qq.com"),
new InternetAddress("269056581@qq.com"),
new InternetAddress("zhengmm@gz2000.net")
}
);*/
transport.close();
}
}
参看文章:
http://blog.csdn.net/ghsau/article/details/17839983
http://blog.csdn.net/never_cxb/article/details/50543289
相关文章推荐
- 基于JavaMail的Java实现简单邮件发送功能
- javaMail Java实现邮件发送,群发功能,java发送邮件
- 基于JavaMail的Java实现复杂邮件发送功能
- Java 基于JavaMail实现向QQ邮箱发送邮件
- Java基于JavaMail实现向QQ邮箱发送邮件
- Java 基于JavaMail实现向QQ邮箱发送邮件(未测试)
- Java基于JavaMail实现向QQ邮箱发送邮件
- javaMail Java实现邮件发送,群发功能,java发送邮件
- Java基于JavaMail实现向QQ邮箱发送邮件
- 基于JavaMail和freemarker模板的邮件发送java工具包
- JavaWeb中使用JavaMail实现发送邮件功能实例详解
- [转载]javaMail Java实现邮件发送
- 基于JavaMail的Java邮件发送:简单邮件发送
- Java 实现QQ邮件发送过程
- 基于java使用JavaMail发送邮件
- 用Java类实现JavaMail发送邮件的例子-Java基础-Java-编程开发
- 【转】javamail-基于SMTP的JAVA邮件发送程序!
- 基于JavaMail的Java邮件发送:简单邮件发送
- javamail 实现邮件发送(基于qq邮箱)