javaMail如何通过代理服务器发送邮件

小元宵 发布于 2013/02/26 11:32
阅读 6K+
收藏 0
try {
String from = "zhangsan@163.com"; // 获取发件人
String to = "434349556qq.com"; // 获取收件人
String subject = "邮件发送测试"; // 获取邮件主题
String messageText = "邮件发送测试内容。"; // 获取邮件内容
String password = "123456"; // 获取发件人邮箱密码
String mailserver = "smtp.163.com"; // 指定SMTP服务器的主机名


// 建立邮件会话
Properties props = new Properties();
props.put("http.proxySet","true");//设置代理主机参数 
props.put("http.proxyHost","172.17.18.80"); 
props.put("http.proxyPort","8080"); 
props.put("mail.smtp.host", mailserver); // 指定SMTP协议
props.put("mail.smtp.auth", "true"); // 指定需要向服务器端提交身份认证
Session sess = Session.getInstance(props); // 获取session

sess.setDebug(true); // 设置调试标志
MimeMessage message = new MimeMessage(sess); // 新建一个消息对象


// 设置发件人
InternetAddress from_mail = new InternetAddress(from);
message.setFrom(from_mail);
// 设置收件人
InternetAddress to_mail = new InternetAddress(to);
message.setRecipient(Message.RecipientType.TO, to_mail);
// 设置主题
message.setSubject(subject);
// 设置内容
message.setText(messageText);
// 设置发送时间
message.setSentDate(new Date());
// 发送邮件
message.saveChanges(); // 保证报头域同会话内容保持一致
Transport transport = sess.getTransport("smtp");
transport.connect(mailserver, from, password); // 建立与邮件服务器之间的连接
transport.sendMessage(message, message.getAllRecipients()); // 发送邮件
transport.close(); // 关闭与邮件服务器之间的连接
System.out.println("发送邮件产生的成功。");
} catch (Exception e) {
System.out.println("发送邮件产生的错误:" + e.getMessage());
}
加载中
0
阿桂爱清净
阿桂爱清净
你这代码贴出来想说什么
0
小元宵
小元宵

非常抱歉,是我没把问题描述清楚。这段简单的利用javaMail发邮件程序,在不用代理上网的机器上运行正常(邮件能发送出去);而在通过代理上网 的机器上确发送失败。

控制台报的错误是:

DEBUG SMTP: trying to connect to host "smtp.163.com", port 25, isSSL false
发送邮件产生的错误:Could not connect to SMTP host: smtp.163.com, port: 25

0
遥志
java的邮件发送有点难,建议可以参考web方式发送邮件的问题:http://www.ccproxy.com/filter009.htm
0
Frankzhao
Frankzhao
所有网上涉及Javamail使用代理服务器的文章都用这样的代码,但是是否有人真的亲自试过?我看了Javamail的源码,根本就没有对于proxy的字段的解析和支持,真是害人啊。。。
Frankzhao
Frankzhao
回复 @76928995 : 两年了……回来挖个坟,需要验证的HTTP代理邮件转发是需要修改Javamail源码的,因为Javamail总是直连STMP服务器的,需要在连接前截下连接,并发送到代理服务器的HTTP连接,如果要验证,需要发送Base64编码的验证信息,待服务器返回200 OK后读掉该信息后连接STMP服务器,之后才能正常对话。
7
76928995
请问你的代理发邮件的问题解决没,可否告知一下怎么弄的
0
活不明白·
活不明白·

遇到同样的问题 这样通过代理发邮件 望高手指点 。。。

0
窝头就辣椒
窝头就辣椒
你好,请问楼主的问题是怎样解决的,我也遇到这个问题,公司代理端口也是8080,报的错误,也是一直连接不上邮箱服务器,想加你qq加不上啊,楼主,请指点一下吧
返回顶部
顶部