给你看我使用中的代码
public static void sendMail(String toAddress, String subject, String sendData) throws
Exception{
Properties props = System.getProperties(); props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.class", "com.sun.mail.smtp.SMTPTransport");
props.put("mail.smtp.host", "mail.******.com");
props.put("mail.smtp.auth", "true"); Session session = Session.getDefaultInstance(props, null); //create a message
MimeMessage msg = new MimeMessage(session);
InternetAddress[] toAddrs = InternetAddress.parse(toAddress, false);
msg.setRecipients(Message.RecipientType.TO, toAddrs);
msg.setFrom(new InternetAddress("*****@******.com"));
msg.setSubject(subject, "gb2312");
msg.setSentDate(new java.util.Date());
msg.setText(sendData, "gb2312"); //transport
Transport transport = session.getTransport("smtp");
transport.connect((String)props.get("mail.smtp.host"),
"******@*******.com",
"*******");
transport.sendMessage(msg, msg.getRecipients(Message.RecipientType.TO));
transport.close();
}
public static void sendMail(String toAddress, String subject, String sendData) throws
Exception{
Properties props = System.getProperties(); props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.class", "com.sun.mail.smtp.SMTPTransport");
props.put("mail.smtp.host", "mail.******.com");
props.put("mail.smtp.auth", "true"); Session session = Session.getDefaultInstance(props, null); //create a message
MimeMessage msg = new MimeMessage(session);
InternetAddress[] toAddrs = InternetAddress.parse(toAddress, false);
msg.setRecipients(Message.RecipientType.TO, toAddrs);
msg.setFrom(new InternetAddress("*****@******.com"));
msg.setSubject(subject, "gb2312");
msg.setSentDate(new java.util.Date());
msg.setText(sendData, "gb2312"); //transport
Transport transport = session.getTransport("smtp");
transport.connect((String)props.get("mail.smtp.host"),
"******@*******.com",
"*******");
transport.sendMessage(msg, msg.getRecipients(Message.RecipientType.TO));
transport.close();
}
解决方案 »
- 数据库怎样存储日志转载的数据
- jsoup可以获取html的标签名称吗?能的话怎么获取啊?
- 请教一下
- struts2 如何返回自定义动态页面
- 配置Quartz问题:Unconvertible UTF-8 character begin...
- 关于Map类的问题
- 请教高手一个系统的问题??
- tomcat 5.0.28 的server.xml中,<context > ....</context>只能修改一次吗?
- 实体bean设置外健值时抛出的异常?
- 有那位高手可以给解释一下JavaBeans,Javaserverlet,J2EE,Jsp,Java Applet之间的区别,各自的使用目的,范围.先在此谢各位了
- EJB2跟EJB3区别大不大现在学EJB2还有必要嘛
- 有专门介绍JavaMail的书吗?(说的多者50)(急)
老大,不行下,用你的代码也有错:如下,和我的第二个一样,怎么回事呢?
type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: Access to default session denied
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:373)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:245)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause java.lang.SecurityException: Access to default session denied
javax.mail.Session.getDefaultInstance(Session.java:292)
org.apache.jsp.test_jsp._jspService(org.apache.jsp.test_jsp:80)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:99)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:325)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:245)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.6 logs.
改成 Session.getInstance(props,(Authenticator)mailAuthenticator);
还是不行,只能给自己的服务器发,给别人的一发就出错:
javax.mail.SendFailedException: Invalid Addresses; nested exception is: class com.sun.mail.smtp.SMTPAddressFailedException: 450 4.7.1 ... Relaying temporarily denied. Cannot resolve PTR record for 20*.1*.12*.*8 sending failed!
20*.1*.12*.*8是你的ip地址吧???我没有sina邮箱,所以无法测试,大致猜测是,sina的邮件服务器对ip地址进行了反向解析,发现ip与对应发件人的email地址主机名不一致,因此被当作spam干掉了。
这些问题与javamail自己无关。
Session mailsession = Session.getInstance(props,null);
与
Session mailsession = Session.getDefaultInstance(props,null);
是有什么区别?
Properties props = System.getProperties();
与Properties props = new Properties();呢?
getInstance是每次都会生成一个新的Session实例。
getDefaultInstance 可以理解成相当于缓存了一个Session实例,然后多次调用同一个实例关于两个Properties 的区别,就应该去看点最基本的入门介绍了。
javamail已经提供src下载,建议读一下src。
pigo(少壮且行英雄梦,迟暮归守温柔乡)的耐心,已经可以发送简单的邮件了,下一个目标就是编码处理和附件。结贴