2016-02-13 74 views
1

我想使用Java發送郵件,但它不工作使用本教程泰國我發現這裏http://www.tutorialspoint.com/java/java_sending_email.htm不能使用JavaMail發送任何郵件

這是我的主要方法

public static void main(String[] args) { 
     // Recipient's email ID needs to be mentioned. 
     String to = "[email protected]"; 

     // Sender's email ID needs to be mentioned 
     String from = "[email protected]"; 

     // Assuming you are sending email from localhost 
     String host = "localhost"; 

     // Get system properties 
     Properties properties = System.getProperties(); 

     // Setup mail server 
     properties.setProperty("smtp.laposte.net", host); 

     // Get the default Session object. 
     Session session = Session.getDefaultInstance(properties); 

     try{ 
     // Create a default MimeMessage object. 
     MimeMessage message = new MimeMessage(session); 

     // Set From: header field of the header. 
     message.setFrom(new InternetAddress(from)); 

     // Set To: header field of the header. 
     message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); 

     // Set Subject: header field 
     message.setSubject("This is the Subject Line!"); 

     // Now set the actual message 
     message.setText("This is actual message"); 

     // Send message 
     Transport.send(message); 
     System.out.println("Sent message successfully...."); 
     }catch (MessagingException mex) { 
     mex.printStackTrace(); 
     } 
    } 

而且我有以下錯誤:

javax.mail.MessagingException的:無法連接到SMTP主機:本地主機,端口:25; 嵌套的異常是: java.net.ConnectException:連接被拒絕:連接 在com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1972) at com.sun.mail.smtp.SMTPTransport.protocolConnect( (Service.java:180)上的javax.mail.Service.connect(Service.java:176) 處的javax.mail.Service.connect(Service.java:295) 上的SMTPTransport.java:642) 。的java:125) 在javax.mail.Transport.send0(Transport.java:194) 在javax.mail.Transport.send(Transport.java:124) 在javamail.JavaMail.main(JavaMail.java:58) 引起:java.net.ConnectException:連接被拒絕:在java.net.DualStackPlainSocke處連接 tImpl.connect0(本機方法) 在java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79) 在java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) 在java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl .java:206) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java (Socket.java:538) at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher .java:319) at com.sun.mail.util.Socke tFetcher.getSocket(SocketFetcher.java:233) 在com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1938) ... 7更 生成成功(總時間:1秒)

+0

然後在網絡上找到另一個有效的例子嗎? –

+0

嘗試以下Tipu Sultan建議的內容。如果這不起作用,那麼在網絡上找到另一個工作的例子:P –

+0

也是,你知道在你的程序中你必須把正確的Gmail用戶ID和正確的密碼? –

回答

1

錯誤在主機使用

host="smtp.gmail.com"; 

如果您使用gmail id發送郵件。那麼你需要打開Gmail從用戶的extrnel應用程序發送郵件。 按照下面的鏈接https://support.google.com/a/answer/57919?hl=en 打開,然後再試一次。

+0

只是嘗試你所要求的。請不要這樣評論。 – Musaddique

+0

我沒有任何「Google for Work」帳戶。但陳我更換ISP服務器它也是一樣。我的ISP可以阻止我的25端口嗎?我在法國奧蘭治 –

+0

@JohnMary你想問什麼? – Musaddique

1

你也可以用spring來發送郵件。

bean.xml

<bean id="myMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> 
     <property name="host" value="smtp.gmail.com" /> 
     <property name="port" value="587" /> 
     <property name="username" value="<user_name>" /> 
     <property name="password" value="<password>" /> 

     <!-- The name of the property, following JavaBean naming conventions --> 
     <property name="javaMailProperties"> 
      <props> 
       <prop key="mail.transport.protocol">smtp</prop> 
       <prop key="mail.smtp.auth">true</prop> 
       <prop key="mail.smtp.starttls.enable">true</prop> 
       <prop key="mail.debug">true</prop> 
      </props> 
     </property> 
    </bean> 

@Service("myMail") 
    public class myMailApi { 

     @Autowired 
     private MailSender myMailSender; 

     public void sendMail(String to,String from,String subject, String body){ 
      SimpleMailMessage simpleMailMessage = new SimpleMailMessage(); 
      simpleMailMessage.setTo(to); 
      simpleMailMessage.setFrom(from); 
      simpleMailMessage.setSubject(subject); 
      simpleMailMessage.setText(body); 
      myMailSender.send(simpleMailMessage); 
     } 
    } 



private static void sendMailClient() { 
     String mailXml = "mail-bean.xml"; 
     ApplicationContext context = new ClassPathXmlApplicationContext(mailXml); 
     myMailApi mailBean = (mmyMailApi) context 
       .getBean("myMail"); 
     mailBean.sendMail("<to>", 
       "<from>", "<subject>", "<body>"); 
    } 
+0

忽略它。你有答案嗎?它解決了嗎?讓我知道如果不是 – Musaddique

+0

Tipu蘇丹我不是這個問題的提問者。約翰瑪麗是。 –

0

使用哪個服務器我可以發送電子郵件,而無需在java mail api中登錄帳戶並登錄? Hotmail是否自動發送郵件而不登錄java郵件?