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

   近日在做一个网站,用到了企业邮箱,之前对邮件发送不太了解,本来有一个网站用的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 = "[email protected]"; // 邮件接收人的邮件地址
   final String username = "[email protected]"; // 发件人的邮件帐户
   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("[email protected]", "测试", "发送成功");

}

}

 

 

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

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

 

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还是出现不兼容的情况,还没有解决

 

你可能感兴趣的:(eclipse,qq,MyEclipse,javaee,Gmail)