javamail收发邮件问题
公司电脑,在公司通过Foxmail客户端可以收发邮件,而自己写的javaMail收发邮件程序却无法收发邮件;该javamail程序在自己家里网络环境下运行正常(可以收发邮件),公司跟家里网络环境的唯一区别是公司上网需要代理。我猜想该问题可能是代理原因,如果是这个原因,那么如何解决呢?还请Oschina上的高手指点解答。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
@Singer:我上网用的公司https协议方式的代理,不需要账户密码。
@等PM:你给的方式也尝试过,问题仍未解决。
用得哪种代理方式 有的代理是要帐号密码的
这是我用到的一段代码,可以成功发送。
嗯,我用的Proxifier代理软件,看到网上说javamail设置代理只需如下设置:
Properties props=System.getProperties();//获取系统属性
props.put("http.proxySet","true");//设置代理主机参数
props.put("http.proxyHost","172.28.2.1");
props.put("http.proxyPort","85");
我也按照这种方法试过,
下面是我的程序代码:
public static void main(String[] args) {
try {
String to = "434349528@qq.com"; // 获取收件人
String subject = "邮件发送测试"; // 获取邮件主题
String messageText = "邮件发送测试内容。"; // 获取邮件内容
// 建立邮件会话
Properties props = System.getProperties();
//设置代理服务器参数
props.put("proxySet","true");
props.put("http.proxyHost","172.17.18.80");
props.put("http.proxyPort","8080");
props.setProperty("socksProxySet", "true");
props.setProperty("socksProxyHost", "172.17.18.80");
props.setProperty("socksProxyPort", "8080");
props.put("mail.smtp.host", MailServer.mailHost); // 指定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(MailServer.mailSenderUser);
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.mailHost, MailServer.mailSenderUser, MailServer.mailSenderPassword); // 建立与邮件服务器之间的连接
transport.sendMessage(message, message.getAllRecipients()); // 发送邮件
transport.close(); // 关闭与邮件服务器之间的连接
System.out.println("发送邮件产生的成功。");
} catch (Exception e) {
e.printStackTrace();
System.out.println("发送邮件产生的错误:" + e.getMessage());
}
}
程序还是失败,请问如何解决?
你Foxmail客户端也要手动设置代理才能发的吧。那就是javamail没设置代理了?