欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

用Hotmail做企业邮箱.发送邮件。

程序员文章站 2022-07-14 17:02:18
...

   近日在做一个网站,用到了企业邮箱,之前对邮件发送不太了解,本来有一个网站用的sogou免费企业邮箱,现在老板要用Hotmail无奈之好再来写个,由于Hotmail邮箱需要SSL验证,而sogou不需要,所以这点就比较麻烦。 

    刚开始没做过这样的东西,当然是没法下手,随而网上查了些资料写了个,经过一番苦战终于发出去了,测试了我的gmail邮箱收到了邮件,但是发现国内的比如QQ和126 之类收取邮件时候比较慢,gmail很快。顺便发了上来。

 

 

 

package com.wlw168.mail;

import java.io.UnsupportedEncodingException;
import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeUtility;

public class SendMail {

public static   void sendMail(String toEmail, String title, String content) {
   String host = "smtp.live.com"; // 指定的smtp服务器
   String from = "XXX信息中心"; // 邮件标题
   String to = "recive@gmail.com"; // 邮件接收人的邮件地址
   final String username = "xxxx@XXX.com"; // 发件人的邮件帐户
   final String password = "password"; // 发件人的邮件密码

   // 创建Properties 对象
   Properties props = System.getProperties();

   // 添加smtp服务器属性 添加了SSL验证
   props.put("mail.smtp.starttls.enable", "true");
   props.put("mail.smtp.host", host);
   props.put("mail.smtp.user", from);
   props.put("mail.smtp.password", password);
   props.put("mail.smtp.port", "25"); // gmail smtp port 587
   props.put("mail.smtp.auth", "true");

   // 创建邮件会话 
   Session session = Session.getDefaultInstance(props,new Authenticator() { // 验账账户
      public PasswordAuthentication getPasswordAuthentication() {
       return new PasswordAuthentication(username, password);
      }});

   try {
    // 定义邮件信息
    MimeMessage message = new MimeMessage(session);
    message.setFrom(new InternetAddress(MimeUtility.encodeText(from,"gb2312", "B")));//GB2312编码,防止接收后标题乱码
    message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
    message.setSubject(title);
    message.setText(content);

    // 发送消息
    // session.getTransport("smtp").send(message); //也可以这样创建Transport对象
    Transport.send(message);

   } catch (MessagingException e) {
    e.printStackTrace();
   } catch (UnsupportedEncodingException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
}

public static void main(String[] args) {
SendMail.sendMail("XXXXX@gmail.com", "测试", "发送成功");

}

}

 

 

 邮件地址,密码之类修改成你自己的,就可以发送了

 做的过程中出现了好多问题

 

1、javax.mail.AuthenticationFailedException

 

这有可能是你的发送邮件的名字和密码不对,会出现这样的异常

 

 

第二种情况

javax.mail.MessagingException: Could not connect to SMTP host: smtdp.live.com, port: 25;



这是没有连接到邮箱SMTP服务器出现的问题,重点检查你的SMTP是否写对了。

 

 

 

 

第三种:

javax.mail.SendFailedException: Sending failed;
nested exception is:
class javax.mail.MessagingException: 530 5.7.0 Must issue a STARTTLS command first

at javax.mail.Transport.send0(Transport.java:218)
at javax.mail.Transport.send(Transport.java:80)
at com.wlw168.mail.SendMail.sendMail(SendMail.java:58)
at com.wlw168.mail.SendMail.main(SendMail.java:69)

这种就不好说了,我是用MyEclipse6.5开发的,这个可能是mail.jar 和activation.jar版本的问题,出这个问题是在J2EE1.4上面出的。如果用的是JAVAEE1.5的话,就需要删除JAVAEE.JAR里面的mail 和activation这两个文件夹里面的,这样后应该就没事了,不然的话也会出现版本不兼容的问题。JAVAEE.JAR这个JAR包是在MyEclipse的

D:\Program Files\MyEclipse 6.5M1 Blue\myeclipse\eclipse\plugins\com.genuitec.eclipse.j2eedt.core_6.4.100.zmyeclipse64100200805\data\libraryset\EE_5

这是我的路径找到后用解压缩WinRAR打开删除里面的mail 和activation文件夹,我当初是这样做删除后在本地测试通过。 但在J2EE1.4还是出现不兼容的情况,还没有解决