您的位置:首页 > 编程语言 > Java开发

javamail发送邮件

2016-12-04 01:09 211 查看

使用javamail发送邮件

在之前的学习中,有需要用到java来发送邮件,通过在网上查找资料,之前实现过一版可以给自己发送邮件但是不能给他人发的代码。今天又折腾了一天,总算解决了。

1.首先不管你设置的发送邮箱是哪一种,第一步都需要开启POP3/SMTP服务,qq邮箱设置位置在设置->账户,再在如下图内容出开启,然后要花一毛钱发条短信生成授权码,记着就行。



网易开启服务的过程也差不多,不过不要钱,授权码还可以自定!

2. 然后我们要在网上下载javamail相关的jar包,导入到所创的项目里。所用的包如下:
javax.activation.jar
common-email-1.2.jar
java-mail-1.4.4.jar
由于这些包是之前导入的,我也懒得去找,就不放上链接了,网上都有资源。

3. 先附上正确代码,然后我再讲那些我遇到的坑。
public class send_email {

public static String Emailaccout="";  //发送邮箱
public static String Emailpassword="";  授权码
public static String myEmailSMTPHost = "smtp.qq.com";

public static void send_mail(String receiveMailAccount) throws Exception {
//创建参数配置, 用于连接邮件服务器的参数配置
Properties props = new Properties();                    // 参数配置
props.put("mail.smtp.host", "host");
props.put("mail.transport.protocol", "smtp");   // 使用的协议(JavaMail规范要求)
props.put("mail.host", myEmailSMTPHost);        // 发件人的邮箱的 SMTP 服务器地址
props.put("mail.smtp.auth", "true");            // 请求认证,参数名称与具体实现有关

//创建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.getDefaultInstance(props);
session.setDebug(true);                                 // 设置为debug模式, 可以查看详细的发送 log

//创建一封邮件
MimeMessage message = createMimeMessage(session,Emailaccout, receiveMailAccount);

// 根据 Session 获取邮件传输对象
Transport transport = session.getTransport();

//使用 邮箱账号 和 密码 连接邮件服务器
transport.connect(myEmailSMTPHost,Emailaccout,Emailpassword);
System.out.println("16"+message.getAllRecipients()+"eeee");
//发送邮件, 发到所有的收件地址, message.getAllRecipients() 获取到的是在创建邮件对象时添加的所有收件人, 抄送
人, 密送人
try{
transport.sendMessage(message, message.getAllRecipients());
}catch(MessagingException ex){
ex.printStackTrace();
}
transport.close();
}

public static MimeMessage createMimeMessage(Session session, String sendMail, String receiveMail) throws Exception {

MimeMessage message = new MimeMessage(session);

message.setFrom(new InternetAddress(sendMail));
//收件人可以为多个
message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(receiveMail));

message.setSubject("欢迎蛤蛤","UTF-8");
message.addHeader("Disposition-Notification-To","1");
//message.setText("这是一封自己写程序发的邮件,如果你收到了,请不要回复!无意冒犯!");
Multipart mainPart = new MimeMultipart();
BodyPart html = new MimeBodyPart();
html.setContent("这个世界啊,还是亦可赛艇啊!", "text/html; charset=utf-8");
mainPart.addBodyPart(html);
message.setContent(mainPart);
message.setSentDate(new Date());
message.saveChanges();

return message;
}

public static void main(String[] args) throws Exception{
send_mail("接受邮箱"); //可以使多个
}
}
中间发送的邮件内容由于懒,就随便写了点,格式排版什么的,自己设定就好。
在下面的一篇博客里,详细讲解了在使用javamail过程中遇到的那些坑,如果还没有解决发送邮件的问题,可以看一下哦。传送门:javamail使用时遇到的那些坑
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java javamail