日期:2014-05-20  浏览次数:20907 次

javamail发送邮件成功 但是却接收不到邮件?
我用java写了一个发送邮件的程序,提示发送成功,但是发送到的邮箱却收到不邮件?这是为什么
package cn.itcast;

import java.util.Properties;

import javax.mail.Address;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class Demo1 {

/**
* @param args add by zxx ,Feb 5, 2009
*/
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
Properties props = new Properties();
props.setProperty("mail.smtp.auth", "true");
props.setProperty("mail.transport.protocol", "smtp");
Session session = Session.getInstance(props);
session.setDebug(true);

Message msg = new MimeMessage(session);
msg.setText("nengshoudaoma");
msg.setFrom(new InternetAddress("haosiweishizhu@sohu.com"));

Transport transport = session.getTransport();
transport.connect("smtp.sina.cn", 25, "haosiweishizhu", "haosiwei");
transport.sendMessage(msg,new Address[]{new InternetAddress("wangzhiqing0327@sohu.com")});

//transport.send(msg,new Address[]{new InternetAddress("itcast_test@sohu.com")});
transport.close();
}

}

运行提示:
DEBUG: setDebug: JavaMail version 1.4ea
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host "smtp.sina.cn", port 25, isSSL false
220 irxd5-182.sinamail.sina.com.cn ESMTP
DEBUG SMTP: connected to host "smtp.sina.cn", port: 25

EHLO 59972864974a4a5
250-irxd5-182.sinamail.sina.com.cn
250-8BITMIME
250-SIZE 83886080
250-AUTH PLAIN LOGIN
250 AUTH=PLAIN LOGIN
DEBUG SMTP: Found extension "8BITMIME", arg ""
DEBUG SMTP: Found extension "SIZE", arg "83886080"
DEBUG SMTP: Found extension "AUTH", arg "PLAIN LOGIN"
DEBUG SMTP: Found extension "AUTH=PLAIN", arg "LOGIN"
DEBUG SMTP: Attempt to authenticate
AUTH LOGIN
334 VXNlcm5hbWU6
aGFvc2l3ZWlzaGl6aHU=
334 UGFzc3dvcmQ6
aGFvc2l3ZWk=
235 #2.0.0 OK Authenticated
DEBUG SMTP: use8bit false
MAIL FROM:<haosiweishizhu@sohu.com>
250 sender <haosiweishizhu@sohu.com> ok
RCPT TO:<wangzhiqing0327@sohu.com>
250 recipient <wangzhiqing0327@sohu.com> ok
DEBUG SMTP: Verified Addresses
DEBUG SMTP: wangzhiqing0327@sohu.com
DATA
354 go ahead
From: haosiweishizhu@sohu.com
Message-ID: <24212202.01317206893437.JavaMail.Administrator@59972864974a4a5>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

nengshoudaoma
.
250 ok: Message 957325150 accepted
QUIT
221 irxd5-182.sinamail.sina.com.cn

------解决方案--------------------
Java code

/**
     * 发邮件方法
     * 
     * @return -2:发送失败,登陆邮件服务器用户名或密码错误;-1:发送失败,邮件格式内容不合法;0:发送成功;
     */
    public static int sendEmail(SendEmailVo sendEmailVo) {
        String from = sendEmailVo.getFrom();
        String toes = sendEmailVo.getTo();
        String password = sendEmailVo.getPassword();
        String subject = sendEmailVo.getSubject();
        String content = sendEmailVo.getContent();
        String host = null;
        String name = null;
        Session session = null;
        MimeMessage message = null;
        Transport transport =null;
        try {
            // 根据发件Email算出发件的邮件服务器
            host = "smtp."
                    + from.substring(from.indexOf("@") + 1, from.length());
            // 根据发件Email算出登陆邮件服务器的用户名
            name = from.substring(0, from.indexOf("@"));
            // 分割出多个收件人
            String[] to = toes.split(";");
            // 初始化一个存放属性的工具类
            Properties props = new Properties();
            // 设置发送Email的服务器
            props.put("mail.smtp.host", host);
            // 对发送Email进行身份认证
            props.put("mail.smpt.auth", "true");
            // 得到与服务器的一个会话
            session = Session.getInstance(props, null);
            // 定义一个邮件消息
            message = new MimeMessage(session);
            // 可以设置一系列邮件属性的类
            BodyPart bp = new MimeBodyPart();
            Multipart mp = null;
            // 设置能够解析html标签的邮件
            bp.setContent(content, "text/html;charset=utf-8");
            // 可以存放多个BodyPart的类
            mp = new MimeMultipart();
            // 添加BodyPart到Multipart类
            mp.addBodyPart(bp);
            // 设置收件人
            message.setFrom(new InternetAddress(from));
            // 设置邮件主题
            message.setSubject(subject);
            // 设置邮件内容
            message.setContent(mp);
            // 添加多个收件人
            for (int i = 0; i < to.length; i++) {
                message.addRecipient(Message.RecipientType.TO,
                        new InternetAddress(to[i]));
            }
            transport = session.getTransport("smtp");
        } catch (MessagingException e) {
            //e.printStackTrace();
            return -1;
        }
        //登陆发邮件服务器,发邮件
        try {
            transport.connect(host, name, password);
            transport.sendMessage(message, message.getAllRecipients());
        } catch (MessagingException e) {
            //e.printStackTrace();
            return -2;
        }
        return 0;
    }