【记录】【解决方案】java发邮件错误:Couldn‘t connect to host, port: localhost, 25; timeout -1;易邮SMTP服务器无法启动;
生活随笔
收集整理的這篇文章主要介紹了
【记录】【解决方案】java发邮件错误:Couldn‘t connect to host, port: localhost, 25; timeout -1;易邮SMTP服务器无法启动;
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
問題描述
解決方案
查看網絡上博客之后,發現是25端口并沒有啟動,控制面板-》…-》服務查看不到,即SMTP服務并沒有啟動。
所以接下來又想怎樣下載SMTP服務,但失敗。
最后我用Winmail Mail Server替換了易郵服務器,最終java代碼運行成功。
第一步,下載&安裝Winmail Mail Server
舊版本6.5網址
https://www.winmail.cn/download_old.php
可試用90天。
安裝步驟一直next即可,兩個都選擇。最終安裝后得到:
第二步,啟動Winmail Mail Server,并使用Mail管理工具。
選擇上面,開啟Mail服務器。應該會彈窗
可以不用管,這個界面是用email地址和密碼生成email的第一種方法。可以用方法二,在登錄管理工具之后,添加用戶生成email。
點擊下面一個管理工具,啟動界面
- 本地主機的意思是,將mail服務器運行在自己的電腦上(一般運行在服務器上)。【1】
- 遠程主機,可以通過第一種添加用戶生成的ip地址登錄,端口默認即可。
- 登錄用戶中的用戶名即管理員,不用改。密碼是安裝時設置的那個。
登錄進去第一件事,設置域名管理
進去第二步,添加用戶組&用戶。
到這個時候,整個Mail服務器上就有了剛剛添加的用戶信息,也就是說
第三步,使用Foxmail終端軟件操作Winmail服務器上mail內容
1. 下載官網
https://www.foxmail.com
2. 登錄mail用戶
a. 選擇其他登錄方式
b. 用郵箱名和創建時設置的密碼登錄即可
c. 設置POP服務器和SMTP服務器。即mail服務器運行的機器ip地址。
3. 測試一下能否正常發送接收消息。
第四步,正題,運行java代碼實現發送郵件
1. 設置用戶一的郵件地址和密碼,用戶二的郵件地址。正常代碼運行。代碼如下:
import java.util.Properties;import javax.mail.Authenticator; import javax.mail.Message; import javax.mail.Message.RecipientType; import javax.mail.MessagingException; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage;/*** 郵件發送的工具類 使用eyoumailserver,內部賬戶發郵件*/ /** javax.mail.Session:上下文環境信息,如服務器的主機名、端口號、協議名稱等* javax.mail.Message:郵件模型,發送郵件和接收郵件的媒介,封裝了郵件的信息,如發件人、收件人、郵件標題、郵件內容等* javax.mail.Transport:連接郵件SMTP服務器,發送郵件 javax.mail.Store:連接郵件POP3、IMAP服務器,收取郵件*/ public class MailUtils2 {private static String userName = "xiaorui@wm.com";// 發送郵件的人private static String password = "xiaorui123";// 發送郵件的賬戶的密碼private static String userName2 = "xiaotang@wm.com";// 接收郵件的人private static String port = "25";// 465、587,默認25/*** 該方法用來發送郵件* * @param to:給誰發郵件**/public static void sendMain(String to) throws AddressException, MessagingException {// 1、創建連接對象,連接到郵箱服務器Properties props = new Properties();// 開啟debug調試props.setProperty("mail.debug", "true");// stmp服務器需要進行身份驗證,也就是有戶名和密碼的校驗,這樣才能通過驗證props.setProperty("mail.smtp.auth", "true");// 發送郵件協議名稱props.setProperty("mail.transport.protocol", "smtp");// 設置郵件服務器主機名props.setProperty("mail.host", "127.0.0.1");// 本地"localhost"// 設端口號(該配置可寫可不寫)props.setProperty("mail.smtp.port", port);// Authenticator:認證信息Session session = Session.getInstance(props, new Authenticator() {@Overrideprotected PasswordAuthentication getPasswordAuthentication() {return new PasswordAuthentication(userName, password);// 使用它給其他賬戶發郵件}});// 2、創建郵件對象Message message = new MimeMessage(session);// 2.1設置發件人message.setFrom(new InternetAddress(userName));// 2、2設置收件人message.addRecipient(RecipientType.TO, new InternetAddress(to));// 2.3郵件的主題message.setSubject("測試發消息");// 2.4郵件的正文(即郵件的內容)message.setContent("測試郵件:來自xiaorui@wm.com的郵件", "text/html;charset=utf-8");// 3.發送郵件 // Transport trans = session.getTransport(); // //連接郵件服務器 // trans.connect(userName, password); // //發送郵件 // trans.sendMessage(message, message.getAllRecipients()); // //關閉連接 // trans.close(); Transport.send(message);// (兩種方式都可以)System.out.println("發送成功");}public static void main(String[] args) {try {sendMain(userName2);} catch (Exception e) {e.printStackTrace();}} }查看結果,運行成功。
參考:
總結
以上是生活随笔為你收集整理的【记录】【解决方案】java发邮件错误:Couldn‘t connect to host, port: localhost, 25; timeout -1;易邮SMTP服务器无法启动;的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 专业的自建邮件服务器,自己搭建邮件服务器
- 下一篇: Email - 搭建自定义邮件服务器