yxhxj2006

          常用鏈接

          統計

          最新評論

          用gmail smtp發送郵件

          import java.util.Properties;
          import javax.mail.Message;
          import javax.mail.Session;
          import javax.mail.Transport;
          import javax.mail.internet.InternetAddress;
          import javax.mail.internet.MimeMessage;

          public class SendMail implements Runnable {
              private final String smtp_host = "smtp.gmail.com";                      
              private final String from_userName = "xx@gmail.com";        
              private final String from_passWord = "xx";                        
              private final String show_name = "xxx";
              
              public String email_address;
              public String email_subject;
              public String email_content;    
              
              public SendMail(String email_address, String email_subject, String email_content) {
                  this.email_address = email_address;
                  this.email_subject = email_subject;
                  this.email_content = email_content;
              }

              public void run() {
                  executeMailSend(email_address, email_subject, email_content);
              }
              
              /**
               * 
               * 
          @param recipients: the mail send to
               * 
          @param sendSubject: the mail subject
               * 
          @param sendText: the mail content
               
          */
              public void executeMailSend(String recipients, String sendSubject, String sendText) {
                  
                  try {            
                      Properties props = System.getProperties();
                      props.put("mail.smtp.starttls.enable", "true");
                      props.put("mail.smtp.host", smtp_host);
                      props.put("mail.smtp.user", from_userName);
                      props.put("mail.smtp.password", from_passWord);
                      props.put("mail.smtp.port", "587");  //gmail smtp port 587
                      props.put("mail.smtp.auth", "true");
                      

                      
                      Session session = Session.getDefaultInstance(props, null);
                      session.setDebug(false);
                      
                      MimeMessage message = new MimeMessage(session);
                      message.setFrom(new InternetAddress(from_userName));
                      message.addRecipient(Message.RecipientType.TO, new InternetAddress(recipients));
                      message.setFrom(new InternetAddress(show_name + "<" + from_userName + ">"));    
                      message.setSubject(sendSubject);
                      message.setContent(sendText, "text/html;charset=utf-8");            
                      
                      Transport transport = session.getTransport("smtp");
                      transport.connect(smtp_host, from_userName, from_passWord);
                      transport.sendMessage(message, message.getAllRecipients());
                      transport.close();
                      
                      System.out.println("send an email to " + recipients + " success");
                  } catch (Exception e) {
                      e.printStackTrace();
                      System.out.println("failure! ");

                  }
              }
              public static void main (String args[]){
                  new SendMail("yy@gmail.com","test","hehe").run();
              }
          }
          結果老是報如下的錯誤
          javax.mail.MessagingException: 530 5.7.0 Must issue a STARTTLS command first. 36sm443504yxh.67
          failure! 

              at com.sun.mail.smtp.SMTPTransport.issueCommand(SMTPTransport.java:1020)
              at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:716)
              at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:388)
              at SendMail.executeMailSend(SendMail.java:59)
              at SendMail.run(SendMail.java:25)
              at SendMail.main(SendMail.java:70)
           折騰了個把小時,苦苦尋求后發現一個解決辦法 
          props.put("mail.smtp.port""587");  
          替換成
          props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 
          props.setProperty("mail.smtp.socketFactory.fallback", "false"); 
          props.setProperty("mail.smtp.port", "465"); 
          props.setProperty("mail.smtp.socketFactory.port", "465"); 
          究其原因也不太清楚,網上有資料說port 587也可以,不知結果不行
          把上述代碼中的 

          posted on 2013-03-08 15:16 奮斗成就男人 閱讀(1148) 評論(0)  編輯  收藏 所屬分類: java

          主站蜘蛛池模板: 西林县| 驻马店市| 游戏| 酉阳| 金溪县| 台东县| 林甸县| 华坪县| 凯里市| 福建省| 桐梓县| 玉树县| 柘荣县| 滕州市| 长岭县| 长丰县| 安徽省| 黑龙江省| 波密县| 霍城县| 方正县| 佳木斯市| 伊金霍洛旗| 博爱县| 南宫市| 潞城市| 拉萨市| 菏泽市| 山西省| 葵青区| 屏东县| 开封县| 镇沅| 石门县| 建昌县| 重庆市| 绥滨县| 永顺县| 夏河县| 福清市| 恩施市|