已有101人关注
企业快信问题
发表在Java图书答疑 2010-04-25
是否精华
版块置顶:
我运行了项目,发送邮件的时候出现了2个问题。


1。首先,如果发送单独的邮件的话是可以,但是如果群发的话就不能发送,错误信息如下:

[font color=#0000FF]DEBUG: setDebug: JavaMail version 1.4.3
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host "smtp.qq.com,418233333@qq.com", port 25, isSSL false[/font]

之后就无法进行下去了,因为无法识别第二个。为什么第二个变成smtp.qq.com呢。


2。无法发送gmail。因为gmail的端口是465,而默认的是25,所以会出现错误,但是,在加入代码
if(mailserver.indexOf("smtp.gmail.com")>=0)
            {
                properties.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 
                properties.setProperty("mail.smtp.socketFactory.fallback", "false"); 
                properties.setProperty("mail.smtp.port", "465"); 
                properties.setProperty("mail.smtp.socketFactory.port", "465"); 
    

        }
之后,端口变成465,gmail发送时不会出现异常,但是之后,[font color=#00FF00]端口不能恢复成25了![/font]发送别的邮件的话端口还是465,这是怎么回事啊?



以下是SendMailDAO,就是你们给的源码,希望可以帮助我解决这两个问题了!谢谢

package com.wgh.dao;

import java.io.File;
import java.sql.*;
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;

import com.wgh.actionForm.SendMailForm;
import com.wgh.core.ConnDB;

public class SendMailDAO {

// 发送邮件
public int sendMail(SendMailForm s) {
int ret = 0;
String from = s.getAddresser();
String to = s.getAddressee();
String subject = s.getTitle();
String content = s.getContent();
String password = s.getPwd();
String path = s.getAdjunct();
try {
//String mailserver ="smtp."+to.substring(to.indexOf('@')+1,to.length()); //在Internet上发送邮件时的代码
String mailserver = "wanggh"; //在局域网内发送邮件时的代码

Properties prop = new Properties();
prop.put("mail.smtp.host", mailserver);
prop.put("mail.smtp.auth", "true");
Session sess = Session.getDefaultInstance(prop);
sess.setDebug(true);
MimeMessage message = new MimeMessage(sess);
message.setFrom(new InternetAddress(from)); // 给消息对象设置发件人
//设置收件人
String toArr[]=to.split(",");
InternetAddress[] to_mail=new InternetAddress[toArr.length];
for(int i=0;i<toArr.length;i++){
to_mail[i]=new InternetAddress(toArr[i]);
}
    message.setRecipients(Message.RecipientType.BCC,to_mail);
//设置主题
message.setSubject(subject);
Multipart mul = new MimeMultipart(); // 新建一个MimeMultipart对象来存放多个BodyPart对象
BodyPart mdp = new MimeBodyPart(); // 新建一个存放信件内容的BodyPart对象
mdp.setContent(content, "text/html;charset=gb2312");
mul.addBodyPart(mdp); // 将含有信件内容的BodyPart加入到MimeMulitipart对象中
if(!path.equals("") && path!=null){ //当存在附件时
// 设置信件的附件(用本机上的文件作为附件)
mdp = new MimeBodyPart(); // 新建一个存放附件的BodyPart
String adjunctname = new String(path.getBytes("GBK"), "ISO-8859-1"); // 此处需要转码,否则附件中包括中文时,将产生乱码
path = (System.getProperty("java.io.tmpdir") + "/" + path).replace(
"\\", "/");
System.out.println("路径:" + path);
FileDataSource fds = new FileDataSource(path);
DataHandler handler = new DataHandler(fds);
mdp.setFileName(adjunctname);
mdp.setDataHandler(handler);
mul.addBodyPart(mdp);
}
message.setContent(mul); // 把mul作为消息对象的内容
message.saveChanges();
Transport transport = sess.getTransport("smtp");
// 以smtp方式登录邮箱,第1个参数是发送邮件用的邮件服务器SMTP地址,第2个参数为用户名,第3个参数为密码
transport.connect(mailserver, from, password);
transport.sendMessage(message, message.getAllRecipients());
transport.close();
ret = 1;
} catch (Exception e) {
System.out.println("发送邮件产生的错误:" + e.getMessage());
ret = 0;
}
return ret;
}

}

分享到:
精彩评论 2
ashleexu
学分:0 LV1
TA的每日心情
开心
2023-12-05 20:37:29
2010-04-25
沙发
希望能给我尽快解决一下!谢谢版主了!

书籍是jsp项目开发全称实录,第四章!
柠檬草
学分:0 LV1
2010-04-26
板凳
第一个问题:
设置本机的DNS地址,问题是smtp.qq.com,418233333@qq.com转不成ip,注意SMTP是邮件服务器,并不是错误。
第二个问题:
这么修改一下代码试试
if(mailserver.indexOf("smtp.gmail.com")>=0)
{
properties.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 
properties.setProperty("mail.smtp.socketFactory.fallback", "false"); 
properties.setProperty("mail.smtp.port", "465"); 
properties.setProperty("mail.smtp.socketFactory.port", "465"); 
}else{
properties.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 
properties.setProperty("mail.smtp.socketFactory.fallback", "false"); 
properties.setProperty("mail.smtp.port", "25"); 
properties.setProperty("mail.smtp.socketFactory.port", "25"); 
}
首页上一页 1 下一页尾页 2 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照