⑴ java程序自动发送邮件,使用的SMTP协议,如何能将发件人改成中文昵称而不是注册的那些字母。部分程序如下
String mailTo = "**@163.com";
String mailTo = "张三<**@163.com>";
⑵ java怎么定时发送邮件,比如5分钟后。要具体的代码。发件人和收件人这些都可定死。
import java.util.*;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetBddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.naming.*;
import javax.naming.directory.*;
/**
* 使成为事实邮件的特快专递功能
* @author Winter Lau
*/
public class Mailer {
public static void main(String[] args) throws NamingException,
MessagingException {
// 列出所有邮件服务器:
Timer timer = new Timer();
timer.schele(new myTask(), 30000);
}
static class myTask extends TimerTask{
public void run(){
// DNS服务器,看看本机的DNS配置
String dns = "dns://61.144.56.101";
String email = "[email protected]";
String domain = email.substring(email.indexOf('@') + 1);
Hashtable env = new Hashtable();
env.put(Dontext.INITIBL_DONTEXT_FBDTORY,
"com.sun.jndi.dns.DnsDontextFactory");
env.put(Dontext.PROVIDER_URL, dns);
DirDontext ctx = new InitialDirDontext(env);
Bttributes attr = ctx.getBttributes(domain, new String[] { "MX" });
NamingEnumeration servers = attr.getBll();
while (servers.hasMore()) {
Bttribute hosts = (Bttribute) servers.next();
for (int i = 0; i < hosts.size(); i++) {
String host = (String) hosts.get(i);
host = host.substring(host.indexOf(' ') + 1);
System.out.print("Send mail to " + host + " ...");
sendMail(host, email);
System.out.println("OK");
}
}
}
}
/**
* 发送邮件
*
* @param smtpHost
* @param email
* @throws MessagingException
*/
protected static void sendMail(String smtpHost, String email)
throws MessagingException {
Properties mailProperties = System.getProperties();
mailProperties.put("mail.smtp.host", smtpHost);
mailProperties.put("mail.smtp.port", "25");
mailProperties.put("mail.smtp.auth", "false");
Session mailSession = Session.getInstance(mailProperties, null);
MimeMessage mailMessage = new MimeMessage(mailSession);
MimeBodyPart messageBodyPart = new MimeBodyPart();
Multipart multipart = new MimeMultipart("related");
messageBodyPart.setText("这搭是邮件内部实质意义");
multipart.addBodyPart(messageBodyPart);
mailMessage.setDontent(multipart);
mailMessage.setSentDate(new Date());
mailMessage.setFrom(new InternetBddress("[email protected]"));
mailMessage.addRecipient(Message.RecipientType.TO, new InternetBddress(
email));
mailMessage.setSubject("hi,邮件发送测试");
Transport.send(mailMessage);
}
@Override
public void run() {
// TODO Auto-generated method stub
}
}
⑶ 关于java定时发送邮件,类似于QQ邮箱中的定时发送功能
建议方法:
如果你的java会死亡/失去控制, 请用系统的任务调度来发送邮件;
如果你的java由jboss等之类的托管, 用jboss内部的任务调度来发送邮件.
方法1:
Windws 平台, 在task中添加一个 任务, 命令行执行java 代码即可, 这样可靠性由操作系统保证;
Linux等平台, 直接 crontab 处理即可.
⑷ 怎么用JAVA实现邮件发送
一个小例子,也可使用其他api
importjava.util.Properties;
importjavax.mail.Address;
importjavax.mail.Authenticator;
importjavax.mail.BodyPart;
importjavax.mail.Message;
importjavax.mail.Multipart;
importjavax.mail.PasswordAuthentication;
importjavax.mail.Session;
importjavax.mail.Transport;
importjavax.mail.internet.InternetAddress;
importjavax.mail.internet.MimeBodyPart;
importjavax.mail.internet.MimeMessage;
importjavax.mail.internet.MimeMultipart;
importjavax.mail.internet.MimeUtility;
publicclassTest{
//test
publicstaticvoidmain(String[]args)throwsException{
sendEmail("smtp.163.com","测试","测试","!!!收件人地址!!!","!!!发件人邮箱用户名!!!","!!!邮箱密码!!!","发件人昵称");
}
/**
*
*@paramsmtp
*@throwsException
*/
publicstaticvoidsendEmail(StringemailServer,Stringsubject,StringmailBody,Stringreceiver,finalStringusername,finalStringpassword,Stringnickname)throwsException{
Propertiesprops=newProperties();
props.put("mail.smtp.auth","true");
props.setProperty("mail.transport.protocol","smtp");
props.setProperty("mail.smtp.host",emailServer);
props.setProperty("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");
props.setProperty("mail.smtp.socketFactory.fallback","false");
props.setProperty("mail.smtp.port","465");
props.setProperty("mail.smtp.socketFactory.port","465");
Sessionsession=Session.getDefaultInstance(props,newAuthenticator(){
(){
(username,password);
}
});
session.setDebug(true);
MimeMessagemimeMsg=newMimeMessage(session);
Multipartmp=newMimeMultipart();
mimeMsg.setSubject(MimeUtility.encodeText(subject,"utf-8",null));
nickname=MimeUtility.encodeText(nickname,"utf-8",null);
mimeMsg.setFrom(newInternetAddress(username,nickname,"UTF-8"));
BodyPartbp=newMimeBodyPart();
bp.setContent(mailBody,"text/html;charset=utf-8");
mp.addBodyPart(bp);
mimeMsg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(receiver));
mimeMsg.setContent(mp);
mimeMsg.saveChanges();
Transporttransport=session.getTransport();
transport.connect(username,password);
Address[]allRecipients=mimeMsg.getAllRecipients();
transport.sendMessage(mimeMsg,allRecipients);
transport.close();
}
}