繁体   English   中英

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

[英]Java Email API emails not being sent properly

我正在将Java email 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;
    }

}

尝试以下方法。 它可能会帮助您。

 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);

范例:

 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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM