各位,这两天折腾邮件功能,开始用main()函数发送邮件很正常,后来改成jsp调用函数发送邮件,就会报错:
com.sun.mail.smtp.SMTPSendFailedException: 554 DT:SPM smtp2, DNGowKCr8YDUwq9M2JJYAw--.102S2 1286587092 http://mail.163.com/help/help_spam_16.htm?ip=115.173.8.15&hostid=smtp2&time=1286587092
如果我发送邮件的参数是前台传进去的,比如 收件人地址,内容之类的就会报错,如果是在程序里面写死的话就会正常发送,不知道哪个高人遇到过这样的问题,帮帮小弟.
com.sun.mail.smtp.SMTPSendFailedException: 554 DT:SPM smtp2, DNGowKCr8YDUwq9M2JJYAw--.102S2 1286587092 http://mail.163.com/help/help_spam_16.htm?ip=115.173.8.15&hostid=smtp2&time=1286587092
如果我发送邮件的参数是前台传进去的,比如 收件人地址,内容之类的就会报错,如果是在程序里面写死的话就会正常发送,不知道哪个高人遇到过这样的问题,帮帮小弟.
解决方案 »
- 不用form如何调用servlet
- 请教一个struts2配置关于kissyeditor控件
- Spring struts hibernaye动态页面显示
- Weblogic预编译无法编译WEB-INF下jsp文件的问题(急)
- java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] 语法错误 (操作符丢失) 在查询表达式 'count(*) count' 中
- 求教关于JSP页面间传值的问题。
- 高手请进::JSP连接SQL Server 2000的问题,在线等
- 这种问题没办法搜索只能请教了
- java加载oracle8i时显示驱动找不到??急!等着开锅
- 请教怎么解包、查看war文件,在线等!
- tomcat JApplet 当前class文件路径
- 请高手解决“xxx cannot be resolved to a type”
jsp中传过来的值是Null,或者是出现乱码,编码问题.你不妨在输出看看结果!
DEBUG看是哪出的問題的 把代碼貼出來看看
import javax.mail.Authenticator;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.Multipart;
import javax.activation.FileDataSource;
import javax.mail.internet.MimeMultipart;
import javax.activation.DataHandler;
import javax.mail.internet.MimeUtility;
import java.util.Date; import org.apache.commons.lang.StringUtils;
public class SandMailService {
public static void main(String[] args){
String title = "程序发送";//所发送邮件的标题
String from ="[email protected]";//从那里发送
String sendTo[] = {"[email protected]","[email protected]"};//发送到那里
//邮件的文本内容,可以包含html标记则显示为html页面
String content = "内容<IMG src='G:\\pics\\2313552.jpg'>";
//所包含的附件,及附件的重新命名
String fileNames[] = {"G:\\pics\\imgapp.jpg,imgapp.jpg","G:\\pics\\pic\\2007512233834822.jpg,2007512233834822.jpg"};
try {
// MailSender mailsender = new MailSender();
sanMail(title, from, sendTo, content, fileNames,"text/html;charset=gb2312");
} catch (Exception ex) { ex.printStackTrace(); }
}
public static void sendMail(String subject, String from, String[] to, String text, String[] filenames,String mimeType)throws Exception{
//ResourceBundle mailProps = ResourceBundle.getBundle("mail"); 可以从配置文件读取相应的参数
Properties props = new Properties(); String smtp = "smtp.163.com"; //设置发送邮件所用到的smtp
String servername = "username"; //用户名
String serverpaswd = "psd"; //密码 javax.mail.Session mailSession; //邮件会话对象
javax.mail.internet.MimeMessage mimeMsg; //MIME邮件对象 props = java.lang.System.getProperties(); //获得系统属性对象
props.put("mail.smtp.host", smtp); //设置SMTP主机
props.put("mail.smtp.auth", "true"); //是否到服务器用户名和密码验证
//到服务器验证发送的用户名和密码是否正确
EmailAutherticatorbean myEmailAuther = new EmailAutherticatorbean(servername, serverpaswd);
//设置邮件会话
mailSession = javax.mail.Session.getInstance(props, (Authenticator) myEmailAuther);
//设置传输协议
javax.mail.Transport transport = mailSession.getTransport("smtp");
//设置from、to等信息
mimeMsg = new javax.mail.internet.MimeMessage(mailSession);
if (!StringUtils.isEmpty(from))
{
InternetAddress sentFrom = new InternetAddress(from);
mimeMsg.setFrom(sentFrom); //设置发送人地址
} InternetAddress[] sendTo = new InternetAddress[to.length];
for (int i = 0; i < to.length; i++)
{
System.out.println("发送到:" + to[i]);
sendTo[i] = new InternetAddress(to[i]);
} mimeMsg.setRecipients(javax.mail.internet.MimeMessage.RecipientType.BCC, sendTo);
mimeMsg.setSubject(subject, "gb2312"); MimeBodyPart messageBodyPart1 = new MimeBodyPart();
//messageBodyPart.setText(UnicodeToChinese(text));
messageBodyPart1.setContent(text, mimeType); Multipart multipart = new MimeMultipart();//附件传输格式
multipart.addBodyPart(messageBodyPart1); for (int i = 0; i < filenames.length; i++) {
MimeBodyPart messageBodyPart2 = new MimeBodyPart();
//选择出每一个附件名
String filename = filenames[i].split(",")[0];
System.out.println("附件名:" + filename);
String displayname = filenames[i].split(",")[1];
//得到数据源
FileDataSource fds = new FileDataSource(filename);
//得到附件本身并至入BodyPart
messageBodyPart2.setDataHandler(new DataHandler(fds));
//得到文件名同样至入BodyPart
//messageBodyPart2.setFileName(displayname);
// messageBodyPart2.setFileName(fds.getName());
messageBodyPart2.setFileName(MimeUtility.encodeText(displayname));
multipart.addBodyPart(messageBodyPart2);
}
mimeMsg.setContent(multipart);
//设置信件头的发送日期
mimeMsg.setSentDate(new Date());
mimeMsg.saveChanges();
//发送邮件
transport.send(mimeMsg);
transport.close();
}}
//验证
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication; public class EmailAutherticatorbean extends Authenticator {
private String m_username = null;
private String m_userpass = null; public void setUsername(String username)
{
m_username = username;
} public void setUserpass(String userpass)
{
m_userpass = userpass;
} public EmailAutherticatorbean(String username, String userpass)
{
super();
setUsername(username);
setUserpass(userpass); }
public PasswordAuthentication getPasswordAuthentication()
{ return new PasswordAuthentication(m_username,m_userpass);
}
}这样就能正常发送,但是在jsp中调用sendMail()就会报错:
com.sun.mail.smtp.SMTPSendFailedException: 554 DT:SPM smtp2, DNGowKCr8YDUwq9M2JJYAw--.102S2 1286587092 http://mail.163.com/help/help_spam_16.htm?ip=115.173.8.15&hostid=smtp2&time=1286587092