㈠ javamail接收邮件报错
出现这个问题,说明验证失败,对于QQ来说,properties的设置,要多写一个SSl认证,QQ邮件是用了SSl加密了,不验证,就会出现这样的报错提示
㈡ javamail怎么设置代理发送邮件
public static void main(String[] args) throws Exception {
MailTest test = new MailTest();
//通过代理发送邮件
test.sendMailByProxy();
}
private void sendMailByProxy()throws Exception{
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
// final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
//设置代理服务器
Properties props = System.getProperties();
props.setProperty("proxySet", "true");
props.setProperty("socksProxyHost", "192.168.1.1");
props.setProperty("socksProxyPort", "1080");
props.setProperty("mail.smtp.host", "smtp.163.com");
//props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);
props.setProperty("mail.smtp.socketFactory.fallback", "false");
props.setProperty("mail.smtp.port", "25");
props.setProperty("mail.smtp.socketFactory.port", "25");
props.put("mail.smtp.auth", "true");
props.put("mail.debug", "true");
props.put("mail.store.protocol", "pop3");
props.put("mail.transport.protocol", "smtp");
final String username = "用户名";
final String password = "密码";
//使用验证
Session session = Session.getDefaultInstance(props,
new Authenticator() {
protected javax.mail.PasswordAuthentication getPasswordAuthentication() {
return new javax.mail.PasswordAuthentication(username,
password);
}
});
MimeMessage message = new MimeMessage(session);
Address address = new InternetAddress("[email protected]");
Address toAaddress = new InternetAddress("[email protected]");
message.setFrom(address);
message.setRecipient(MimeMessage.RecipientType.TO, toAaddress);
message.setSubject("测试");
message.setText("test");
message.setSentDate(new Date());
Transport.send(message);
System.out.println("邮件发送!");
}
㈢ javaMail中session的getDefaultInstance和getInstance的区别
<span style="color: #3366ff;">从处理流程中可以看出,首先是从缓存中查找是否有properties存在
如果存在,则加载默认的properties
如果不存在才加载用户自己定义的properties,
所以当一个应用为每个用户独立创建properties的时候,还是应该调用getInstance,
除非你希望有一个默认的properties让用户使用</span></p><p>问题找到了,因为它会首先去内存和系统文件中去找properties,所以不管我在页面改几次数据,其实在后台中生成session时都和系统启动时的一样,所以在MailUtil.sendTextMessage(mailSession,RptTaskMailConfig.Sender,
receiver,null,mail_subject,mail_content,"GB2312",null);时session里的sender和传入的sender不一致,因此出错,修改<span style="color: #0000ff;">Session.getDefaultInstance(props, authentic);<span style="color: #000000;">为</span>Session.getInstance(props, authentic);后,</span><span style="color: #000000;">可以正确发送修改帐号,密码等资料后的邮件.OK</span></p><p>最后再补充一下,session.getdefaultinstance和getinstance的区别 :</p><p><span style="color: #3366ff;">如果想要同时使用两个帐号发送javamail,比如使用</span><a href="mailto:[email protected]"><span style="color: #3366ff;">[email protected]</span></a><span style="color: #3366ff;">发送1#邮件,使用</span><a href="mailto:[email protected]"><span style="color: #3366ff;">[email protected]</span></a><span style="color: #3366ff;">发送2#邮件,这时候,你就需要同时创建两个java.mail.Session对象。但是如果你仍然使用Session.getDefaultInstance创建session对象的话,你会发现,第二个username:</span><a href="mailto:[email protected]"><span style="color: #3366ff;">[email protected]</span></a><span style="color: #3366ff;">创建的session永远都和第一个一样,这是为什么呢?因为,getDefaultInstance是真正单例模式,而且,里面的username和password属性是final型的,无法更改。所以,你会发现两封email都是由</span><a href="mailto:[email protected]"><span style="color: #3366ff;">[email protected]</span></a><span style="color: #3366ff;">发出来的。所以这个时候你要使用javax.mail.Session.getInstance()方法来创建session对象。</span></p><p><span style="color: #3366ff;">
㈣ javamail或邮件服务器配置
收邮件要涉及到服务器的授权,不然任何人都可以收你的邮件了。
所以你要实现一个授权的类,然后产生一个对象放到Session session = Session.getDefaultInstance(props, null)中你设置为null的地方。比如:
public class CheckPword
extends Authenticator
String username
String userpword
public CheckPword
public CheckPword(String name String pword)
username = name
userpword = pword
protected PasswordAuthentication getPasswordAuthentication
/@todo Override this javax.mail.Authenticator method/
return new PasswordAuthentication(username, userpword)
调用:
Session session = Session.getDefaultInstance(props,
new CheckPword(user pword))
其实可以不用授权类,直接用用户名和密码连的,具体的问题,我现在上班没时间看,哈哈,不好意思
谢谢大家,我现在的问题是,我怎么连上接收信件的服务器,我写pop.126.com这个不好用,它总说连接不上。我不知道为[离线表情]大家有时间帮我看看吧,我做完发信了,但收信就做不出来了
刚才看了下126的帮助,是这个地址啊
接收邮件服务器: POP.126.com
发送邮件服务器: SMTP.126.com