未正确发送Java电子邮件API电子邮件

未正确发送Java电子邮件API电子邮件,java,email,Java,Email,我正在使用Java电子邮件API实现电子邮件功能。它似乎不起作用,因为没有收到任何电子邮件。我的代码中没有任何异常(因此它似乎正确地连接到smtp),当我调试它时,它似乎运行正常。所以我想知道我的代码是否还有其他问题?在这里,还有相关的进口商品。类中还有一个“createBody()”方法,但它只用信息填充消息,所以我认为这并不重要 import javax.mail.Message; import javax.mail.Session; import javax.mail.Transport;

我正在使用Java电子邮件API实现电子邮件功能。它似乎不起作用,因为没有收到任何电子邮件。我的代码中没有任何异常(因此它似乎正确地连接到smtp),当我调试它时,它似乎运行正常。所以我想知道我的代码是否还有其他问题?在这里,还有相关的进口商品。类中还有一个“createBody()”方法,但它只用信息填充消息,所以我认为这并不重要

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



public class Mail {

    public Mail() {
    }

    static public boolean sendHtml(Commission commission, String mailServer, InternetAddress fromAddress, InternetAddress ccAddress, String subject, String header) throws Exception {

        try {
            String body = createBody(commission);
            InternetAddress toAddress = new InternetAddress(commission.getForm().getActiveReceiver().getEmail());

            Properties props = new Properties();
            props.put("mail.smtp.host", mailServer);
            Session session = Session.getDefaultInstance(props);

            //Instantiate a message holder
            Message msg = new MimeMessage(session);
            msg.setHeader("Content-Type", "text/plain; charset='iso-8859-1'");

            //From
            msg.setFrom(fromAddress);

            //To
            msg.addRecipient(Message.RecipientType.TO, toAddress);

            //CC
            if (ccAddress != null)
                msg.addRecipient(Message.RecipientType.CC, ccAddress);

            //Subject
            if (!subject.equals(""))
                msg.setSubject(subject);

            //Date
            msg.setSentDate(new Date());

            //Begin
            StringBuffer sb = new StringBuffer();
            sb.append("<html>\n");
            sb.append("<head>\n");
            sb.append("<title>\n");
            sb.append("</title>\n");
            sb.append("<style type=\"text/css\">\n");
            sb.append("*{font-family: Tahoma; font-size: 11px; font-weight: normal; color: #51514F;}\n");
            sb.append("body{background-color: #FEF8EA;}\n");
            sb.append("tr.odd {background-color: #F3F3F3;border: 1px #F3F3F3 solid;}\n");
            sb.append("tr.even {background-color: #FFFFFF;border: 1px #FFFFFF solid;}\n");
            sb.append("th {font-weight: bold; background-color:#F3F3F3; border-bottom: 1px solid #E2D6BC;}\n");
            sb.append("p.header {font-weight: bold;}\n");
            sb.append("table {border-collapse:collapse; border: 1px solid #E2D6BC;}\n");
            sb.append("td.center {text-align:center;}\n");
            sb.append("</style>\n");
            sb.append("</head>\n");
            sb.append("<body>\n");

            //Header
            if (!header.equals(""))
                sb.append("<h1>"+header+"</h1>");

            //Body
            if (!body.equals("")) 
                sb.append(body);

            //End
            sb.append("</body>\n");
            sb.append("</htmnl>\n");

            msg.setContent(sb.toString(), "text/html");
            System.out.println("About to connect");
            //Connect
            Transport transport = session.getTransport("smtp");
            transport.connect();


            //Sending the mail
    transport.sendMessage(msg,msg.getRecipients(Message.RecipientType.TO));

            //Sending the CC mail
            if (ccAddress != null)
        transport.sendMessage(msg,msg.getRecipients(Message.RecipientType.CC));

            //Close
            transport.close();

        } catch (Exception e) {
            throw e;
        }
        return true;
    }

}
import javax.mail.Message;
导入javax.mail.Session;
导入javax.mail.Transport;
导入javax.mail.internet.InternetAddress;
导入javax.mail.internet.mimessage;
公营邮件{
公共邮件(){
}
静态公共布尔sendHtml(佣金、字符串邮件服务器、InternetAddress fromAddress、InternetAddress ccAddress、字符串主题、字符串头)引发异常{
试一试{
字符串体=createBody(委托);
InternetAddress toAddress=新的InternetAddress(commission.getForm().getActiveReceiver().getEmail());
Properties props=新属性();
props.put(“mail.smtp.host”,mailServer);
Session Session=Session.getDefaultInstance(props);
//实例化消息持有者
Message msg=新的mimessage(会话);
msg.setHeader(“内容类型”、“文本/普通;字符集='iso-8859-1'”);
//从
msg.setFrom(fromAddress);
//到
msg.addRecipient(Message.RecipientType.TO,toAddress);
//抄送
if(ccAddress!=null)
msg.addRecipient(Message.RecipientType.CC,ccAddress);
//主题
如果(!subject.equals(“”)
msg.setSubject(主题);
//日期
msg.setSentDate(新日期());
//开始
StringBuffer sb=新的StringBuffer();
某人附加(“\n”);
某人附加(“\n”);
某人附加(“\n”);
某人附加(“\n”);
某人附加(“\n”);
sb.append(“*{font-family:Tahoma;字体大小:11px;字体重量:normal;颜色:#51514F;}\n”);
sb.append(“正文{背景色:#FEF8EA;}\n”);
sb.append(“tr.odd{背景色:#f3;边框:1px#f3实心;}\n”);
sb.append(“tr.偶数{背景色:#FFFFFF;边框:1px#FFFFFF solid;}\n”);
sb.append(“th{font-weight:bold;背景色:#f3;边框底部:1px solid#E2D6BC;}\n”);
sb.append(“p.header{font-weight:bold;}\n”);
sb.append(“表{border collapse:collapse;border:1px solid#E2D6BC;}\n”);
sb.append(“td.center{text align:center;}\n”);
某人附加(“\n”);
某人附加(“\n”);
某人附加(“\n”);
//标题
如果(!header.equals(“”)
sb.追加(“+标题+”);
//身体
如果(!body.equals(“”)
某人(身体);
//结束
某人附加(“\n”);
某人附加(“\n”);
msg.setContent(sb.toString(),“text/html”);
System.out.println(“即将连接”);
//连接
传输=session.getTransport(“smtp”);
transport.connect();
//发送邮件
sendMessage(msg,msg.getRecipients(Message.RecipientType.TO));
//发送抄送邮件
if(ccAddress!=null)
sendMessage(msg,msg.getRecipients(Message.RecipientType.CC));
//接近
transport.close();
}捕获(例外e){
投掷e;
}
返回true;
}
}

尝试以下操作。这可能对你有帮助

 Session mailSession = Session.getInstance(System.getProperties());    
 Transport transport 
      = new SMTPTransport(mailSession,new URLName("mail.your-server.com"));    
 transport.connect("mail.your-server.com",portNumber,userName,userPassword);
Exmaple:

 Session mailSession = Session.getInstance(System.getProperties());
 Transport transport 
     = new SMTPTransport(mailSession,new URLName("mail.prabhakar.com"));
 transport.connect("mail.prabhakar.com",25,"prabhakar","******");

您可以打开smtp调试,并查看
smtp
级别发生的情况:

Properties props = new Properties();
props.put("mail.smtp.host","<MAILHOST>");
props.put("mail.debug", true);
Session session = Session.getInstance(props);
Properties=newproperties();
props.put(“mail.smtp.host”,”);
props.put(“mail.debug”,true);
Session=Session.getInstance(props);

最近没有使用此框架,但您应该检查一些事情。。。1.允许您在没有身份验证的情况下使用服务器吗?2.try/catch块不执行任何操作,在重新引发异常之前,至少用e.printStackTrace()放一行,以防它不在调用方法中。3.您是否已从简单的telnet客户端(telnet mailserver 25)测试了邮件服务器,然后只需使用SMTP命令即可。4.您是否检查了连接是否真正建立,以及服务器是否收到任何消息?