㈠ javamail接收郵件報錯
出現這個問題,說明驗證失敗,對於QQ來說,properties的設置,要多寫一個SSl認證,QQ郵件是用了SSl加密了,不驗證,就會出現這樣的報錯提示
㈡ javamail怎麼設置代理發送郵件
public static void main(String[] args) throws Exception {
MailTest test = new MailTest();
//通過代理發送郵件
test.sendMailByProxy();
}
private void sendMailByProxy()throws Exception{
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
// final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
//設置代理伺服器
Properties props = System.getProperties();
props.setProperty("proxySet", "true");
props.setProperty("socksProxyHost", "192.168.1.1");
props.setProperty("socksProxyPort", "1080");
props.setProperty("mail.smtp.host", "smtp.163.com");
//props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);
props.setProperty("mail.smtp.socketFactory.fallback", "false");
props.setProperty("mail.smtp.port", "25");
props.setProperty("mail.smtp.socketFactory.port", "25");
props.put("mail.smtp.auth", "true");
props.put("mail.debug", "true");
props.put("mail.store.protocol", "pop3");
props.put("mail.transport.protocol", "smtp");
final String username = "用戶名";
final String password = "密碼";
//使用驗證
Session session = Session.getDefaultInstance(props,
new Authenticator() {
protected javax.mail.PasswordAuthentication getPasswordAuthentication() {
return new javax.mail.PasswordAuthentication(username,
password);
}
});
MimeMessage message = new MimeMessage(session);
Address address = new InternetAddress("[email protected]");
Address toAaddress = new InternetAddress("[email protected]");
message.setFrom(address);
message.setRecipient(MimeMessage.RecipientType.TO, toAaddress);
message.setSubject("測試");
message.setText("test");
message.setSentDate(new Date());
Transport.send(message);
System.out.println("郵件發送!");
}
㈢ javaMail中session的getDefaultInstance和getInstance的區別
<span style="color: #3366ff;">從處理流程中可以看出,首先是從緩存中查找是否有properties存在
如果存在,則載入默認的properties
如果不存在才載入用戶自己定義的properties,
所以當一個應用為每個用戶獨立創建properties的時候,還是應該調用getInstance,
除非你希望有一個默認的properties讓用戶使用</span></p><p>問題找到了,因為它會首先去內存和系統文件中去找properties,所以不管我在頁面改幾次數據,其實在後台中生成session時都和系統啟動時的一樣,所以在MailUtil.sendTextMessage(mailSession,RptTaskMailConfig.Sender,
receiver,null,mail_subject,mail_content,"GB2312",null);時session里的sender和傳入的sender不一致,因此出錯,修改<span style="color: #0000ff;">Session.getDefaultInstance(props, authentic);<span style="color: #000000;">為</span>Session.getInstance(props, authentic);後,</span><span style="color: #000000;">可以正確發送修改帳號,密碼等資料後的郵件.OK</span></p><p>最後再補充一下,session.getdefaultinstance和getinstance的區別 :</p><p><span style="color: #3366ff;">如果想要同時使用兩個帳號發送javamail,比如使用</span><a href="mailto:[email protected]"><span style="color: #3366ff;">[email protected]</span></a><span style="color: #3366ff;">發送1#郵件,使用</span><a href="mailto:[email protected]"><span style="color: #3366ff;">[email protected]</span></a><span style="color: #3366ff;">發送2#郵件,這時候,你就需要同時創建兩個java.mail.Session對象。但是如果你仍然使用Session.getDefaultInstance創建session對象的話,你會發現,第二個username:</span><a href="mailto:[email protected]"><span style="color: #3366ff;">[email protected]</span></a><span style="color: #3366ff;">創建的session永遠都和第一個一樣,這是為什麼呢?因為,getDefaultInstance是真正單例模式,而且,裡面的username和password屬性是final型的,無法更改。所以,你會發現兩封email都是由</span><a href="mailto:[email protected]"><span style="color: #3366ff;">[email protected]</span></a><span style="color: #3366ff;">發出來的。所以這個時候你要使用javax.mail.Session.getInstance()方法來創建session對象。</span></p><p><span style="color: #3366ff;">
㈣ javamail或郵件伺服器配置
收郵件要涉及到伺服器的授權,不然任何人都可以收你的郵件了。
所以你要實現一個授權的類,然後產生一個對象放到Session session = Session.getDefaultInstance(props, null)中你設置為null的地方。比如:
public class CheckPword
extends Authenticator
String username
String userpword
public CheckPword
public CheckPword(String name String pword)
username = name
userpword = pword
protected PasswordAuthentication getPasswordAuthentication
/@todo Override this javax.mail.Authenticator method/
return new PasswordAuthentication(username, userpword)
調用:
Session session = Session.getDefaultInstance(props,
new CheckPword(user pword))
其實可以不用授權類,直接用用戶名和密碼連的,具體的問題,我現在上班沒時間看,哈哈,不好意思
謝謝大家,我現在的問題是,我怎麼連上接收信件的伺服器,我寫pop.126.com這個不好用,它總說連接不上。我不知道為[離線表情]大家有時間幫我看看吧,我做完發信了,但收信就做不出來了
剛才看了下126的幫助,是這個地址啊
接收郵件伺服器: POP.126.com
發送郵件伺服器: SMTP.126.com