使用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);
       
 
   
    不过可以通过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
目录
相关文章
|
7月前
|
Java 网络安全 API
Java一分钟之-JavaMail:发送电子邮件
本文介绍了使用JavaMail API发送电子邮件的步骤,包括环境准备、依赖引入、基本配置和代码示例。通过添加Maven或Gradle依赖,设置SMTP服务器信息并实现Authenticator,可以创建和发送邮件。同时,文章列举了SMTP认证失败、连接超时等常见问题及其解决方案,并提出了安全与最佳实践建议,如启用SSL/TLS、避免硬编码密码和妥善处理异常。
1265 0
|
7月前
|
数据安全/隐私保护
JavaMail给QQ邮箱发邮件报错
JavaMail给QQ邮箱发邮件报错
|
网络协议 API 数据安全/隐私保护
Java:javax.mail通过163服务器发送邮件
Java:javax.mail通过163服务器发送邮件
157 0
|
安全 网络安全 数据安全/隐私保护
使用JavaMail发送邮件
使用JavaMail的API发送邮件~! 1 import org.apache.commons.collections.CollectionUtils; 2 import org.
2060 0
|
Java 数据安全/隐私保护
|
Java 应用服务中间件 数据安全/隐私保护