閱讀962 返回首頁    go 阿裏雲 go 技術社區[雲棲]


使用javamail通過代理發送郵件

  我們是沒辦法使用javamail通過一般的代理服務器發送郵件的,比如下麵的代碼是沒有效果的:
        Properties props = System.getProperties();
        props.setProperty(
"proxySet","true");
        props.setProperty(
"ProxyHost","192.168.155.1");
        props.setProperty(
"ProxyPort","1080");
        //或者這樣,也是沒用
        //Properties props = System.getProperties();
        //props.setProperty("proxySet","true");
        //props.setProperty("http.proxyHost","192.168.155.1");
        //props.setProperty("http.proxyPort","808");

        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 = "username"
        
final String password = "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);
        dot.gifdot.gifdot.gifdot.gifdot.gifdot.gifdot.gifdot.gif
 
   
    不過可以通過socks網關來訪問外網的email服務器,當然,前提是你安裝了一個socks服務器。完整的使用代理發送郵件代碼如下:

    
package net.rubyeye.testjms;

import java.util.Date;
import java.util.Properties;
import java.security.Security;
import javax.mail.Address;
import javax.mail.Authenticator;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class MailTest {

    
/**
     * 
@param args
     
*/
    
public static void main(String[] args) 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.155.1");
        props.setProperty(
"socksProxyPort""1081");
        props.setProperty(
"mail.smtp.host""smtp.126.com");
        
        
// props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);
        
// props.setProperty("mail.smtp.socketFactory.fallback", "false");
        
// props.setProperty("mail.smtp.port", "465");
        
// props.setProperty("mail.smtp.socketFactory.port", "465");
        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 = "username";
        
final String password = "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("killme6115@126.com");
        Address toAaddress 
= new InternetAddress("killme6115@sina.com");
        
        message.setFrom(address);
        message.setRecipient(MimeMessage.RecipientType.TO, toAaddress);
        message.setSubject(
"測試");
        message.setText(
"test");
        message.setSentDate(
new Date());
        
        Transport.send(message);
        System.out.println(
"郵件發送!");

    }

}
文章轉自莊周夢蝶  ,原文發布時間5.17

最後更新:2017-05-17 12:01:50

  上一篇:go  websphere5.1上使用普通client調用EJB需要注意的問題
  下一篇:go  《設計模式精解》讀後感