6
回答
javamail收发邮件问题
【腾讯云】校园拼团福利,1核2G服务器10元/月!>>>   
公司电脑,在公司通过Foxmail客户端可以收发邮件,而自己写的javaMail收发邮件程序却无法收发邮件;该javamail程序在自己家里网络环境下运行正常(可以收发邮件),公司跟家里网络环境的唯一区别是公司上网需要代理。我猜想该问题可能是代理原因,如果是这个原因,那么如何解决呢?还请Oschina上的高手指点解答。
举报
小元宵
发帖于5年前 6回/495阅
共有6个答案 最后回答: 5年前

嗯,我用的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());
  }
 }

 

程序还是失败,请问如何解决?

这是我用到的一段代码,可以成功发送。

props.put("proxySet","true"); 
		props.put("proxyHost","proxy.XXX.com.cn"); 
		props.put("proxyPort","80"); 
		props.put("mail.smtp.host", "smtp.qq.com");
		props.put("mail.smtp.auth", "true");
		props.put("mail.debug", "true");
顶部