当前位置: 移动技术网 > IT编程>开发语言>Java > java实现163邮箱发送邮件到qq邮箱成功案例

java实现163邮箱发送邮件到qq邮箱成功案例

2019年07月22日  | 移动技术网IT编程  | 我要评论

下载和上传附件、发送短信和发送邮件,都算是程序中很常用的功能,之前记录了文件的上传和下载还有发送短信,由于最近比较忙,邮件发送的功能就没有时间去弄,现在终于成功以163邮箱发送邮件到qq邮箱,以下是相关代码,具体解释可以参考代码中注释: 

package test; 
 
import java.util.arraylist; 
import java.util.date; 
import java.util.list; 
import java.util.properties; 
import java.util.regex.matcher; 
import java.util.regex.pattern; 
import javax.mail.address; 
import javax.mail.authenticator; 
import javax.mail.bodypart; 
import javax.mail.message; 
import javax.mail.passwordauthentication; 
import javax.mail.session; 
import javax.mail.transport; 
import javax.mail.internet.internetaddress; 
import javax.mail.internet.mimebodypart; 
import javax.mail.internet.mimemessage; 
import javax.mail.internet.mimemultipart; 
import com.sun.mail.util.mailsslsocketfactory; 
 
///** 
// * 
// * @author tuzongxun123 
// * @description 邮件发送测试类 
// */ 
public class sendmailtest { 
 public static void main(string[] args) throws exception { 
  // 配置信息 
  properties pro = new properties(); 
  pro.put("mail.smtp.host", "smtp.163.com"); 
  pro.put("mail.smtp.auth", "true"); 
  // ssl加密 
  mailsslsocketfactory sf = null; 
  sf = new mailsslsocketfactory(); 
  // 设置信任所有的主机 
  sf.settrustallhosts(true); 
  pro.put("mail.smtp.ssl.enable", "true"); 
  pro.put("mail.smtp.ssl.socketfactory", sf); 
  // 根据邮件的会话属性构造一个发送邮件的session,这里需要注意的是用户名那里不能加后缀,否则便不是用户名了 
  //还需要注意的是,这里的密码不是正常使用邮箱的登陆密码,而是客户端生成的另一个专门的授权码 
  mailauthenticator authenticator = new mailauthenticator("tuzongxun123", 
    "客户端授权码"); 
  session session = session.getinstance(pro, authenticator); 
  // 根据session 构建邮件信息 
  message message = new mimemessage(session); 
  // 创建邮件发送者地址 
  address from = new internetaddress("tuzongxun123@163.com"); 
  // 设置邮件消息的发送者 
  message.setfrom(from); 
  // 验证收件人邮箱地址 
  list<string> toaddresslist = new arraylist<>(); 
  toaddresslist.add("1160569243@qq.com"); 
  stringbuffer buffer = new stringbuffer(); 
  if (!toaddresslist.isempty()) { 
   string regex = "^([a-z0-9a-z]+[-|\\.]?)+[a-z0-9a-z]@([a-z0-9a-z]+(-[a-z0-9a-z]+)?\\.)+[a-za-z]{2,}$"; 
   pattern p = pattern.compile(regex); 
   for (int i = 0; i < toaddresslist.size(); i++) { 
    matcher match = p.matcher(toaddresslist.get(i)); 
    if (match.matches()) { 
     buffer.append(toaddresslist.get(i)); 
     if (i < toaddresslist.size() - 1) { 
      buffer.append(","); 
     } 
    } 
   } 
  } 
  string toaddress = buffer.tostring(); 
  if (!toaddress.isempty()) { 
   // 创建邮件的接收者地址 
   address[] to = internetaddress.parse(toaddress); 
   // 设置邮件接收人地址 
   message.setrecipients(message.recipienttype.to, to); 
   // 邮件主题 
   // message.setsubject("java邮件测试"); 
   message.setsubject("为什么错了"); 
   // 邮件容器 
   mimemultipart mimemultipart = new mimemultipart(); 
   // 设置html 
   bodypart bodypart = new mimebodypart(); 
   // 邮件内容 
   // string htmltext = "java邮件测试111"; 
   string htmltext = "为什么错了"; 
   bodypart.setcontent(htmltext, "text/html;charset=utf-8"); 
   mimemultipart.addbodypart(bodypart); 
   // 添加附件 
   list<string> fileaddresslist = new arraylist<string>(); 
   fileaddresslist 
     .add("c:\\users\\tuzongxun123\\desktop\\新建 microsoft office word 文档.docx"); 
   if (fileaddresslist != null) { 
    bodypart attchpart = null; 
    for (int i = 0; i < fileaddresslist.size(); i++) { 
     if (!fileaddresslist.get(i).isempty()) { 
      attchpart = new mimebodypart(); 
      // 附件数据源 
      datasource source = new filedatasource( 
        fileaddresslist.get(i)); 
      // 将附件数据源添加到邮件体 
      attchpart.setdatahandler(new datahandler(source)); 
      // 设置附件名称为原文件名 
      attchpart.setfilename(mimeutility.encodetext(source 
        .getname())); 
      mimemultipart.addbodypart(attchpart); 
     } 
    } 
   } 
   message.setcontent(mimemultipart); 
   message.setsentdate(new date()); 
   // 保存邮件 
   message.savechanges(); 
   // 发送邮件 
   transport.send(message); 
  } 
 } 
} 
 
class mailauthenticator extends authenticator { 
 
 /** 
  * 用户名 
  */ 
 private string username; 
 /** 
  * 密码 
  */ 
 private string password; 
 
 /** 
  * 创建一个新的实例 mailauthenticator. 
  * 
  * @param username 
  * @param password 
  */ 
 public mailauthenticator(string username, string password) { 
  this.username = username; 
  this.password = password; 
 } 
 
 public string getpassword() { 
  return password; 
 } 
 
 @override 
 protected passwordauthentication getpasswordauthentication() { 
  return new passwordauthentication(username, password); 
 } 
 
 public string getusername() { 
  return username; 
 } 
 
 public void setpassword(string password) { 
  this.password = password; 
 } 
 
 public void setusername(string username) { 
  this.username = username; 
 } 
 
} 

注:我有个同事使用我这个代码更换为他的账号和客户端授权码后,一运行就报错,然后重置了一下邮箱的客户端授权码后,错误便消失了。

以上就是本文的全部内容,希望对大家学习java程序设计有所帮助。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网