baitianhai(hong):
您好,我想实现在网页内向输入的邮箱地址发送邮件(信息)。
您好,我想实现在网页内向输入的邮箱地址发送邮件(信息)。
解决方案 »
- Java 如何调用 Python?
- 请求帮助下
- 关于动态连接与静态连接
- java新手 。最最简单的一道多态基础题
- 求一个函数....
- 在LINUX下有没有类似于Access的数据库,只要拷贝就能用
- 菜鸟上路求助,呵呵
- 请问java.awt.GridBagConstraints 中的insets(0,0,0,0)的参数具体指的是什么?
- 这样做一个竖立文字类似 Label的类
- java中关于droptarget的问题
- 在使用JDK调试时,出现这样的错误:Exception in thread "main" java.lang.NoSuchMethodError : main 是什么原因造成这样!
- 有没有把JAVA程序转到C的工具?
import javax.mail.*;
import javax.mail.internet.*;public class JavaMailTest
{ public JavaMailTest()
{
} public static void main(String[] args) throws MessagingException
{
String smtpHost = "hostname";//接收邮件服务器
String from = "xxx";//发送人邮件地址
String to = "xxx@hostname" ;//接收人邮件地址 //start a session
java.util.Properties props = System.getProperties();
props.put("mail.debug","false");
Session session = Session.getInstance(props, null); //construct a message
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
message.addRecipient(Message.RecipientType.TO,
new InternetAddress(to));
message.setSubject("主题"); message.setText("邮件内容"); //connect to transport
Transport transport = session.getTransport("smtp");
transport.connect(smtpHost, "", ""); //send the message and close the connection
transport.sendMessage(message, message.getAllRecipients());
transport.close();
}
}
* 发送邮件,可设置抄送地址,暗送地址
* @return i,返回<int>1</int>表示发送成功,返回<int>0</int>则发送失败
*/
public int sendMail()
{
String status = null; //用于显示错误状态
int i = 0; Properties properties = System.getProperties();
properties.setProperty("mail.transport.protocol","smtp");
properties.put("mail.smtp.host","www.tbx.com.cn"); //创建信件服务器
properties.put("mail.smtp.auth","true"); //身份认证 //得到对话对象
Session session = Session.getDefaultInstance(properties, new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(user,password);
}
});
try
{
//创建一个消息,并初始化该消息的各项元素
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from)); InternetAddress[] toadd = InternetAddress.parse(to);
InternetAddress[] ccadd = InternetAddress.parse(cc);
InternetAddress[] bcadd = InternetAddress.parse(bcc);
message.setRecipients(Message.RecipientType.TO,toadd);
message.setRecipients(Message.RecipientType.CC,ccadd);
message.setRecipients(Message.RecipientType.BCC,bcadd);
message.setSubject(subject); Multipart mp = new MimeMultipart();
Enumeration ef = file.elements();
MimeBodyPart mbp = new MimeBodyPart();
mbp.setText(text);
mp.addBodyPart(mbp); //检查序列中是否还有更多的对象
while (ef.hasMoreElements())
{
MimeBodyPart mbp1 = new MimeBodyPart();
//选择出每一个附件名
String filename = ef.nextElement().toString();
//得到数据源
FileDataSource fds = new FileDataSource(filename);
//得到附件本身并至入BodyPart
mbp1.setDataHandler(new DataHandler(fds));
//得到文件名同样至入BodyPart
mbp1.setFileName(fds.getName());
mp.addBodyPart(mbp1);
}
//移走集合中的所有元素
file.removeAllElements();
//Multipart加入到信件
message.setContent(mp);
//设置信件头的发送日期
message.setSentDate(new Date()); //发送信件
Transport transport = session.getTransport("smtp");
transport.send(message,message.getAllRecipients());
transport.close(); i = 1;
status = "send sucesseful.";
}
catch (AddressException e)
{
status = "There was an error parsing the addresses.";
System.err.println(e.getMessage());
}
catch (SendFailedException e)
{
status = "There was an error sending the message.";
System.err.println(e.getMessage());
}
catch (MessagingException e)
{
status = "There was an unexpected eorror.";
System.err.println(e.getMessage());
}
catch (Exception e)
{
status = "Error";
System.err.println(e.getMessage());
}
finally
{
System.out.println("status: " + status);
return i;
}
}
定义认证类
public class SmtpAuthenticator extends javax.mail.Authenticator
{
String usr=null;
String pw=null;
public SmtpAuthenticator(String user,String pass)
{
this.usr = user;
this.pw = pass;
}
protected javax.mail.PasswordAuthentication getPasswordAuthentication()
{
return new javax.mail.PasswordAuthentication(usr, pw);
}
}
然后使用
//用户认证过程
SmtpAuthenticator sa = new SmtpAuthenticator(username,password);
Session sess=Session.getInstance(props,sa);
sess.setDebug(false);
详情请看这里,或者搜索一下
http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=12942
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 Email_Autherticatorbean() {
super();
} public Email_Autherticatorbean(String username, String userpass) {
super();
setUsername(username);
setUserpass(userpass);
}
//一定要有这个方法,它是在需要身份验证时自动被调用的
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(m_username,m_userpass);
}
}
************************8
package email.tools;public class Figure {
private String sender ;
private String recevier ;
private String subject ;
private String copyfor;
private String hiddenfor;
private String content;
private String filePath;
public void setSender(String s){this.sender = s;}
public String getSender(){return this.sender;}
public void setRecevier(String s){this.recevier = s;}
public String getRecevier(){return this.recevier;}
public void setSubject(String s){this.subject = s;}
public String getSubject(){return this.subject;}
public void setCopyfor(String s){this.copyfor = s;}
public String getCopyfor(){return this.copyfor;}
public void setHiddenfor(String s){this.hiddenfor = s;}
public String getHiddenfor(){return this.hiddenfor;}
public void setContent(String s){this.content = s;}
public String getContent(){return this.content;}
public void setFilePath(String s){this.filePath = s;}
public String getFilePath(){return this.filePath;}
}
******************
package email.tools;public class MailUserAttribute implements java.io.Serializable {
private String smtp = "";
private String user = "";
private String password = "";
public void setSMTP(String s){this.smtp = s;}
public String getSMTP(){return this.smtp;}
public void setUser(String s){this.user = s;}
public String getUser(){return this.user;}
public void setPassword(String s){this.password = s;}
public String getPassword(){return this.password;}
}
*************************
package email.tools;import java.io.*;
import java.net.InetAddress;
import java.util.Properties;
import java.util.Date;import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
public class SendMail implements java.io.Serializable {
private Figure fig = null;
private MailUserAttribute ua = null;
private MimeMessage mimeMsg = null;
private Session session = null; public SendMail(Figure figure , MailUserAttribute mua) {
fig = figure;
ua = mua;
} public void send() {
try {
Properties props = System.getProperties(); //获得系统属性
props.put("mail.smtp.host", ua.getSMTP()); //设置SMTP主机
props.put("mail.smtp.auth","true"); //设置身份验证为真,若须身份验证则必须设为真
//获得邮件会话对象
//session = Session.getDefaultInstance(props,null);
//注意下面这行的 Session.getDefaultInstance 方法的第二个参数
session = Session.getDefaultInstance(props, new Email_Autherticatorbean(ua.getUser(), ua.getPassword()));
//创建MIME邮件对象
mimeMsg = new MimeMessage(session);
//设置发信人
mimeMsg.setFrom(new InternetAddress(fig.getSender()));
//设置收信人
if(fig.getRecevier() != null){
mimeMsg.setRecipients( Message.RecipientType.TO, InternetAddress.parse(fig.getRecevier()));
}
//设置抄送人
if(fig.getCopyfor() != null){
mimeMsg.setRecipients( Message.RecipientType.CC, InternetAddress.parse(fig.getCopyfor()));
}
//设置暗送人
if(fig.getHiddenfor() != null){
mimeMsg.setRecipients( Message.RecipientType.BCC, InternetAddress.parse(fig.getHiddenfor()));
}
//设置邮件主题
mimeMsg.setSubject(fig.getSubject(),"GBK");
//设置邮件内容
mimeMsg.setText(fig.getContent() ,"GBK" );
//发送日期
mimeMsg.setSentDate(new Date());
//发送邮件
Transport.send( mimeMsg );
System.out.println( "email send!");
}catch(Exception e) {
e.printStackTrace();
}
} public static void main(String[] arg) {
Figure fig = new Figure();
MailUserAttribute ma = new MailUserAttribute();
String mailhost = "smtp.163.net";
String from = "[email protected]";
String to = "[email protected]";
String subject = "您好";
String content = "带身份验证的";
String user = "bzg119";
String password = "774210";
ma.setSMTP(mailhost);
ma.setUser(user);
ma.setPassword(password);
fig.setSender(from);
fig.setRecevier(to);
fig.setSubject(subject);
fig.setContent(content);
SendMail sm = new SendMail(fig , ma);
sm.send();
}
}
最后一个是主执行程序