javamail发送基础问题!我已经搜索过了,实在不知道怎么回事 没有人帮我看看么?郁闷呀!上头要我写发email的程序又没人教我,全都要自学最怕就是出这种小问题,好像不是什么问题,但程序就是通不过,不知道什么原因 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 //用如下方法进行发送Transport tran=msession.getTransport("smtp");tran.connect(mailSmtpServer,mailUser,mailPass);tran.send(msg); 我以前写的:public class SendMail { /** * 待发送的邮件 */ private Mail mail; /** * 发送邮件的配置 */ private MailBox mailBox; /** * 传入待发送的邮件 * * @param mailBox * 发送邮件的配置信息 * @param mail * 发送的邮件 */ public SendMail(MailBox mailBox, Mail mail) { this.mail = mail; this.mailBox=mailBox; } protected void send() throws Exception { //发送邮件使用的服务器 String hostName = mailBox.getHostName(); //连接服务器的用户名 String userName = mailBox.getUserName(); //连接服务器的用户密码 String password = mailBox.getPassword(); //Properties env = System.getProperties(); Properties env=new Properties(); //存储发送邮件服务器的信息 env.put("mail.smtp.host", hostName); //同时通过验证 env.put("mail.smtp.auth", "true"); //得到登陆器 AbstractAuthenticator authenticator = MailElementFactory.getInstance() .createAuthenticator(); //根据属性新建一个邮件会话 Session session = Session.getDefaultInstance(env); session.setDebug(false); //创建一个消息 MimeMessage message = new MimeMessage(session); //设定该消息的信息 //设定发件人 UserEMailAddress fromAddress = mail.getFromUser(); if (fromAddress != null) { String fromUser = fromAddress.getUserName(); String fromEmail = fromAddress.getEmailAddress(); InternetAddress fromInter = new InternetAddress(fromUser, fromEmail); message.setFrom(fromInter); } else { InternetAddress from=new InternetAddress("[email protected]"); message.setFrom(from); } //设定发送到 Collection toUser = mail.getToUser(); if (toUser != null && toUser.size() > 0) { Iterator iter = toUser.iterator(); while (iter.hasNext()) { UserEMailAddress address = (UserEMailAddress) iter.next(); addAddress(message, address, Message.RecipientType.TO); } } //设定抄送到 Collection copyUser = mail.getCopyUser(); if (copyUser != null && copyUser.size() > 0) { Iterator iter = copyUser.iterator(); while (iter.hasNext()) { UserEMailAddress address = (UserEMailAddress) iter.next(); addAddress(message, address, Message.RecipientType.CC); } } //密送到 Collection copySecretUser = mail.getCopySecrecyUser(); if (copySecretUser != null && copySecretUser.size() > 0) { Iterator iter = copySecretUser.iterator(); while (iter.hasNext()) { UserEMailAddress address = (UserEMailAddress) iter.next(); addAddress(message, address, Message.RecipientType.BCC); } } //设定回复地址 Collection repliesUser = mail.getRepliesUser(); if (repliesUser != null && repliesUser.size() > 0) { Iterator replyIter = repliesUser.iterator(); Collection replyAddresses = new ArrayList(); while (replyIter.hasNext()) { UserEMailAddress reAddress = (UserEMailAddress) replyIter .next(); String replyUserName = reAddress.getUserName(); String replyEmail = reAddress.getEmailAddress(); InternetAddress re = new InternetAddress(replyUserName, replyEmail); replyAddresses.add(re); } message.setReplyTo((Address[]) replyAddresses .toArray(new Address[] {})); } //设定需要发送收条,第二参数为回复地址,可以多个设定 if(mail.isReplySign()){ //设定收条地址 repliesUser = mail.getRepliesUser(); if (repliesUser != null && repliesUser.size() > 0) { Iterator replyIter = repliesUser.iterator(); Collection replyAddresses = new ArrayList(); while (replyIter.hasNext()) { UserEMailAddress reAddress = (UserEMailAddress) replyIter .next(); String replyUserName = reAddress.getUserName(); String replyEmail = reAddress.getEmailAddress(); InternetAddress re = new InternetAddress(replyUserName, replyEmail); replyAddresses.add(re); } message.addHeader("Disposition-Notification-To","[email protected],[email protected]"); } } //设定主题 message.setSubject(mail.getSubject()); //设定发送时间 message.setSentDate(mail.getSendDate()); //创建消息体 buildMessageContent(message); //加了没有反映// message.setFlag(Flags.Flag.DRAFT,true);// message.setFlag(Flags.Flag.SEEN,true); message.saveChanges(); Transport transport=session.getTransport("smtp"); MailListener listener=new MailListener(); transport.addTransportListener(listener); transport.addConnectionListener(listener); transport.connect(hostName,userName,password); transport.sendMessage(message,message.getAllRecipients()); transport.close(); } protected void buildMessageContent(Message message)throws Exception { // create and fill the first message part MimeBodyPart textBody = new MimeBodyPart(); textBody.setText(mail.getBodyText()); //添加附件 Multipart multiPart=new MimeMultipart(); Collection attackments=mail.getMutiparts(); if(attackments!=null&&attackments.size()>0){ Iterator iter=attackments.iterator(); while(iter.hasNext()){ Attackment attackment=(Attackment)iter.next(); String fileName=attackment.getFileName(); MimeBodyPart multiBodyPart=new MimeBodyPart(); FileDataSource ds=new FileDataSource(fileName); multiBodyPart.setDataHandler(new DataHandler(ds)); String separator=File.separator; int index=fileName.lastIndexOf(separator); String name=fileName.substring(index+1); multiBodyPart.setFileName(name); multiPart.addBodyPart(multiBodyPart); } } message.setContent(multiPart); } protected void addAddress(Message message, UserEMailAddress address, Message.RecipientType type) throws MailException { try { String toName = address.getUserName(); String emailAddress = address.getEmailAddress(); InternetAddress inter = new InternetAddress(); inter.setPersonal(toName); inter.setAddress(emailAddress); message.setRecipient(type, inter); } catch (Exception e) { throw new MailException(e.fillInStackTrace()); } } public static void main(String[] args) throws Exception { String hostName="192.168.0.181"; String password="7570083"; String protocol="pop3"; String userName="chenshm"; String name="localhost"; String url="d://"; MailBox mailBox = new MailBox(hostName,userName,password,protocol,name,url); Mail mail=new Mail(); Collection toUser=new ArrayList(); UserEMailAddress to1=new UserEMailAddress("csm","csm@localhost"); toUser.add(to1); mail.setToUser(toUser); mail.setSubject("mySend"); UserEMailAddress from=new UserEMailAddress("csm","[email protected]"); mail.setFromUser(from); mail.setBodyText((new Date()).toGMTString()); //设定附件 Attackment attackment=new Attackment(); File file=new File("E:\\download\\jmail\\javamail-1.3.2ea\\demo\\sendfile.java"); attackment.setFileName("E:\\download\\jmail\\javamail-1.3.2ea\\demo\\sendfile.java"); StringBuffer attackmentBuffer=new StringBuffer(); String line=null; BufferedReader reader=new BufferedReader(new FileReader(file)); while(true){ line=reader.readLine(); if(line==null){ break; } attackmentBuffer.append(line); } attackment.setContent(attackmentBuffer.toString()); mail.addMutipart(attackment); attackment=new Attackment(); file=new File("D:\\eclipse\\startup.jar"); attackment.setFileName("D:\\eclipse\\startup.jar"); attackmentBuffer=new StringBuffer(); line=null; reader=new BufferedReader(new FileReader(file)); while(true){ line=reader.readLine(); if(line==null){ break; } attackmentBuffer.append(line); } attackment.setContent(attackmentBuffer.toString()); mail.addMutipart(attackment); SendMail test = new SendMail(mailBox, mail); test.send(); }} 你的代码差一句props.put("mail.smtp.auth", "true");吧 奇怪了,怎么试都不行呀我用的用户名和密码是我的账号的用户名密码是不是smtp服务器的用户名密码是专门的,不能使用个人账户的用户名密码?对邮件发送不太了解,问的问题比较弱智 你在SMTP上的用户名是这个"我的用户名"吗,他其实应该叫帐号,就是你的邮箱帐号,比如[email protected] 这里的用户名(SMTP帐号)是yourname,如果你的SMTP要求认证,一般都采用与POP3一样的用户名和密码,如果用其他的,SMTP服务帮助应该告诉。还有,认证时候的方式一般采用BASE64格式发送认证信息(这些在JAVA MAIL包中已经封装了) 现在有很少SMTP使用中文帐号,因为标准协议规范中没有定义中文帐号。 哦,我没有在这里写出真实的用户名和密码:)我的smtp服务器是:mail.caexpo.orgpop3服务器同上我有一个账户然后我用这个账户发送邮件,然后失败! 老大们假设我有一个邮箱叫[email protected]username:mypassword:my要发到另一个邮箱:[email protected]只要发送的代码,该怎么写呢?怎样才能发出去呢?受不了了?谁给我贴一点代码亚,要可以运行的 shangqiao(伤桥)老兄的太长了我只要发邮件的分不够可以加!多谢了 ......java.util.Properties props = System.getProperties();props.put("mail.smtp.host", host);props.put("mail.smtp.auth","true");Session mailsession =Session.getInstance(props, null); Transport transport=null; try{ transport = mailsession.getTransport("smtp"); mail.saveChanges(); transport.connect(host,username,password); transport.sendMessage(mail,mail.getAllRecipients()); out.print("<center>邮件发送成功</center>"); }catch(Exception e){ // e.printStackTrace(); System.out.println("-------------------------------------------"); System.out.println("web writeto.jsp error:"+e.getMessage()); System.out.println("-------------------------------------------"); out.print("<center>邮件发送失败:"+e.getMessage()+"</center><br>"); }finally{ if (transport!=null && transport.isConnected()) transport.close(); } Apache+Tomcat 部署J2EE项目 200分 jcom 调用 com 组件 tomcat6会 关闭?那位告诉知道原因吗? 一个郁闷的事情 hibernate映射的问题 有没有去去携程或者大众点评网面试JAVA开发工程师的经验分享? 是不是mssql jdbc支持jdbc2.0很不好? 困扰很久的消息BEAN的7个问题!非常希望得到解决! 怎么在b/s模式下使用有状态会话Bean 如何调整JB8中的光标???高分!!!! 后台接口对接 struts1.1开发的问题? 发帖见证!--- ---小弟从今日起开始学java!!!
Transport tran=msession.getTransport("smtp");
tran.connect(mailSmtpServer,mailUser,mailPass);
tran.send(msg);
public class SendMail {
/**
* 待发送的邮件
*/
private Mail mail; /**
* 发送邮件的配置
*/
private MailBox mailBox; /**
* 传入待发送的邮件
*
* @param mailBox
* 发送邮件的配置信息
* @param mail
* 发送的邮件
*/
public SendMail(MailBox mailBox, Mail mail) {
this.mail = mail;
this.mailBox=mailBox;
} protected void send() throws Exception {
//发送邮件使用的服务器
String hostName = mailBox.getHostName();
//连接服务器的用户名
String userName = mailBox.getUserName();
//连接服务器的用户密码
String password = mailBox.getPassword(); //Properties env = System.getProperties();
Properties env=new Properties();
//存储发送邮件服务器的信息
env.put("mail.smtp.host", hostName);
//同时通过验证
env.put("mail.smtp.auth", "true"); //得到登陆器
AbstractAuthenticator authenticator = MailElementFactory.getInstance()
.createAuthenticator();
//根据属性新建一个邮件会话
Session session = Session.getDefaultInstance(env);
session.setDebug(false); //创建一个消息
MimeMessage message = new MimeMessage(session);
//设定该消息的信息 //设定发件人
UserEMailAddress fromAddress = mail.getFromUser();
if (fromAddress != null) {
String fromUser = fromAddress.getUserName();
String fromEmail = fromAddress.getEmailAddress();
InternetAddress fromInter = new InternetAddress(fromUser, fromEmail);
message.setFrom(fromInter);
} else {
InternetAddress from=new InternetAddress("[email protected]");
message.setFrom(from);
} //设定发送到
Collection toUser = mail.getToUser();
if (toUser != null && toUser.size() > 0) {
Iterator iter = toUser.iterator();
while (iter.hasNext()) {
UserEMailAddress address = (UserEMailAddress) iter.next();
addAddress(message, address, Message.RecipientType.TO);
}
} //设定抄送到
Collection copyUser = mail.getCopyUser();
if (copyUser != null && copyUser.size() > 0) {
Iterator iter = copyUser.iterator();
while (iter.hasNext()) {
UserEMailAddress address = (UserEMailAddress) iter.next();
addAddress(message, address, Message.RecipientType.CC);
}
} //密送到
Collection copySecretUser = mail.getCopySecrecyUser();
if (copySecretUser != null && copySecretUser.size() > 0) {
Iterator iter = copySecretUser.iterator();
while (iter.hasNext()) {
UserEMailAddress address = (UserEMailAddress) iter.next();
addAddress(message, address, Message.RecipientType.BCC);
}
} //设定回复地址
Collection repliesUser = mail.getRepliesUser();
if (repliesUser != null && repliesUser.size() > 0) {
Iterator replyIter = repliesUser.iterator();
Collection replyAddresses = new ArrayList();
while (replyIter.hasNext()) {
UserEMailAddress reAddress = (UserEMailAddress) replyIter
.next();
String replyUserName = reAddress.getUserName();
String replyEmail = reAddress.getEmailAddress();
InternetAddress re = new InternetAddress(replyUserName,
replyEmail);
replyAddresses.add(re);
}
message.setReplyTo((Address[]) replyAddresses
.toArray(new Address[] {}));
}
//设定需要发送收条,第二参数为回复地址,可以多个设定
if(mail.isReplySign()){
//设定收条地址
repliesUser = mail.getRepliesUser();
if (repliesUser != null && repliesUser.size() > 0) {
Iterator replyIter = repliesUser.iterator();
Collection replyAddresses = new ArrayList();
while (replyIter.hasNext()) {
UserEMailAddress reAddress = (UserEMailAddress) replyIter
.next();
String replyUserName = reAddress.getUserName();
String replyEmail = reAddress.getEmailAddress();
InternetAddress re = new InternetAddress(replyUserName,
replyEmail);
replyAddresses.add(re);
}
message.addHeader("Disposition-Notification-To","[email protected],[email protected]");
}
}
//设定主题
message.setSubject(mail.getSubject()); //设定发送时间
message.setSentDate(mail.getSendDate()); //创建消息体
buildMessageContent(message);
//加了没有反映
// message.setFlag(Flags.Flag.DRAFT,true);
// message.setFlag(Flags.Flag.SEEN,true);
message.saveChanges();
Transport transport=session.getTransport("smtp");
MailListener listener=new MailListener();
transport.addTransportListener(listener);
transport.addConnectionListener(listener);
transport.connect(hostName,userName,password);
transport.sendMessage(message,message.getAllRecipients());
transport.close();
} protected void buildMessageContent(Message message)throws Exception {
// create and fill the first message part
MimeBodyPart textBody = new MimeBodyPart();
textBody.setText(mail.getBodyText()); //添加附件
Multipart multiPart=new MimeMultipart();
Collection attackments=mail.getMutiparts();
if(attackments!=null&&attackments.size()>0){
Iterator iter=attackments.iterator();
while(iter.hasNext()){
Attackment attackment=(Attackment)iter.next();
String fileName=attackment.getFileName();
MimeBodyPart multiBodyPart=new MimeBodyPart();
FileDataSource ds=new FileDataSource(fileName);
multiBodyPart.setDataHandler(new DataHandler(ds));
String separator=File.separator;
int index=fileName.lastIndexOf(separator);
String name=fileName.substring(index+1);
multiBodyPart.setFileName(name);
multiPart.addBodyPart(multiBodyPart);
}
}
message.setContent(multiPart);
}
Message.RecipientType type) throws MailException {
try {
String toName = address.getUserName();
String emailAddress = address.getEmailAddress();
InternetAddress inter = new InternetAddress();
inter.setPersonal(toName);
inter.setAddress(emailAddress);
message.setRecipient(type, inter);
} catch (Exception e) {
throw new MailException(e.fillInStackTrace());
}
} public static void main(String[] args) throws Exception {
String hostName="192.168.0.181";
String password="7570083";
String protocol="pop3";
String userName="chenshm";
String name="localhost";
String url="d://";
MailBox mailBox = new MailBox(hostName,userName,password,protocol,name,url);
Mail mail=new Mail();
Collection toUser=new ArrayList();
UserEMailAddress to1=new UserEMailAddress("csm","csm@localhost");
toUser.add(to1);
mail.setToUser(toUser);
mail.setSubject("mySend");
UserEMailAddress from=new UserEMailAddress("csm","[email protected]");
mail.setFromUser(from);
mail.setBodyText((new Date()).toGMTString());
//设定附件
Attackment attackment=new Attackment();
File file=new File("E:\\download\\jmail\\javamail-1.3.2ea\\demo\\sendfile.java");
attackment.setFileName("E:\\download\\jmail\\javamail-1.3.2ea\\demo\\sendfile.java");
StringBuffer attackmentBuffer=new StringBuffer();
String line=null;
BufferedReader reader=new BufferedReader(new FileReader(file));
while(true){
line=reader.readLine();
if(line==null){
break;
}
attackmentBuffer.append(line);
}
attackment.setContent(attackmentBuffer.toString());
mail.addMutipart(attackment);
attackment=new Attackment();
file=new File("D:\\eclipse\\startup.jar");
attackment.setFileName("D:\\eclipse\\startup.jar");
attackmentBuffer=new StringBuffer();
line=null;
reader=new BufferedReader(new FileReader(file));
while(true){
line=reader.readLine();
if(line==null){
break;
}
attackmentBuffer.append(line);
}
attackment.setContent(attackmentBuffer.toString());
mail.addMutipart(attackment);
SendMail test = new SendMail(mailBox, mail);
test.send();
}
}
props.put("mail.smtp.auth", "true");吧
我用的用户名和密码是我的账号的用户名密码
是不是smtp服务器的用户名密码是专门的,不能使用个人账户的用户名密码?
对邮件发送不太了解,问的问题比较弱智
如果你的SMTP要求认证,一般都采用与POP3一样的用户名和密码,如果用其他的,SMTP
服务帮助应该告诉。还有,认证时候的方式一般采用BASE64格式发送认证信息(这些在
JAVA MAIL包中已经封装了)
我的smtp服务器是:mail.caexpo.org
pop3服务器同上
我有一个账户
然后我用这个账户发送邮件,然后失败!
假设我有一个邮箱叫[email protected]
username:my
password:my
要发到另一个邮箱:[email protected]
只要发送的代码,该怎么写呢?
怎样才能发出去呢?
受不了了?
谁给我贴一点代码亚,要可以运行的
shangqiao(伤桥)老兄的太长了
我只要发邮件的
分不够可以加!多谢了
java.util.Properties props = System.getProperties();
props.put("mail.smtp.host", host);
props.put("mail.smtp.auth","true");
Session mailsession =Session.getInstance(props, null);
Transport transport=null;
try{
transport = mailsession.getTransport("smtp");
mail.saveChanges();
transport.connect(host,username,password);
transport.sendMessage(mail,mail.getAllRecipients());
out.print("<center>邮件发送成功</center>");
}catch(Exception e){
// e.printStackTrace();
System.out.println("-------------------------------------------");
System.out.println("web writeto.jsp error:"+e.getMessage());
System.out.println("-------------------------------------------");
out.print("<center>邮件发送失败:"+e.getMessage()+"</center><br>");
}finally{
if (transport!=null && transport.isConnected())
transport.close();
}