簡體   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