package com.box.tei.controller.yiqi;
import java.util.Date;
import java.util.Properties;
import javax.mail.Address;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import com.sun.mail.util.MailSSLSocketFactory;
public class MailTest {
public static void main(String[] args) throws Exception {
//设置代理服务器
Properties props = System.getProperties();
props.setProperty("proxySet", "true");
props.setProperty("socksProxyHost", "192.168.99.124");
props.setProperty("socksProxyPort", "1080");
props.setProperty("mail.smtp.host", "smtp.qq.com");
props.put("mail.smtp.auth", "true");
props.put("mail.debug", "true");
// 设置邮件服务器主机名
props.setProperty("mail.host", "smtp.qq.com");
// 发送邮件协议名称
props.setProperty("mail.transport.protocol", "smtp");
MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
props.put("mail.smtp.ssl.enable", "true");
props.put("mail.smtp.ssl.socketFactory", sf);
Session session = Session.getInstance(props);
Message message = new MimeMessage(session);
Address address = new InternetAddress("386050195@qq.com");
message.setFrom(address);
message.setSubject("测试");
message.setText("test2");
message.setSentDate(new Date());
Transport transport = session.getTransport();
//邮件服务器、发送邮箱账号、第三方验证码
transport.connect("smtp.qq.com", "386050195@qq.com", "ayyfachdcrkncahb");
transport.sendMessage(message, new Address[] { new InternetAddress("386050195@qq.com") });
transport.close();
System.out.println("邮件发送!");
}
}
这两天遇到一个需要从内网发送邮件出去的问题,找了很多资料,最后还是解决了,代码如上。
需要注意的地方有这么几点:
1,若需要使用代理,需在Linux服务器上安装socket代理;
2,代码里设置socket代理
props.setProperty("proxySet", "true");
props.setProperty("socksProxyHost", "192.168.99.124");
props.setProperty("socksProxyPort", "1080");
3,sf认证
MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
props.put("mail.smtp.ssl.enable", "true");
props.put("mail.smtp.ssl.socketFactory", sf);
4,设置属性 Properties 时,需要使用
Properties props = System.getProperties(); ,不然会出错。
好了,就是这些,希望对大家有帮助。