javaMail如何通过代理服务器发送邮件
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());
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
你好,请问楼主的问题是怎样解决的,我也遇到这个问题,公司代理端口也是8080,报的错误,也是一直连接不上邮箱服务器,想加你qq加不上啊,楼主,请指点一下吧
遇到同样的问题 这样通过代理发邮件 望高手指点 。。。
请问你的代理发邮件的问题解决没,可否告知一下怎么弄的
回复
两年了……回来挖个坟,需要验证的HTTP代理邮件转发是需要修改Javamail源码的,因为Javamail总是直连STMP服务器的,需要在连接前截下连接,并发送到代理服务器的HTTP连接,如果要验证,需要发送Base64编码的验证信息,待服务器返回200 OK后读掉该信息后连接STMP服务器,之后才能正常对话。
所有网上涉及Javamail使用代理服务器的文章都用这样的代码,但是是否有人真的亲自试过?我看了Javamail的源码,根本就没有对于proxy的字段的解析和支持,真是害人啊。。。
java的邮件发送有点难,建议可以参考web方式发送邮件的问题:http://www.ccproxy.com/filter009.htm
非常抱歉,是我没把问题描述清楚。这段简单的利用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
你这代码贴出来想说什么