Saya belajar tentang Javamail hari ini. Untuk kenyamanan penggunaan di masa depan, saya menulis sepotong kode sendiri dan mengetiknya menjadi paket toples untuk kenyamanan penggunaan di masa depan. hehe
Tiga kode berikut adalah semua kode saya. Karena saya tidak tahu cara mengunggah paket JAR ke Javaeye, teman -teman kembali dan membuatnya sendiri.
Kode saya memiliki tiga kelas:
Kelas Pertama: MailSenderInfo.java
Salinan kode adalah sebagai berikut:
paket com.util.mail;
/**
* Informasi dasar yang diperlukan untuk mengirim email
*/
impor java.util.properties;
mailsenderinfo kelas publik {
// IP dan port server yang mengirim surat
private string mailserverhost;
private string mailServerport = "25";
// Alamat pengirim email
string pribadi dari address;
// Alamat penerima email
Toaddress String Pribadi;
// Masuk ke nama pengguna dan kata sandi dari server pengiriman email
nama pengguna string pribadi;
kata sandi string pribadi;
// diperlukan otentikasi
Validasi boolean pribadi = false;
// Subjek email
subjek string pribadi;
// Konten teks dari email
konten string pribadi;
// Nama file dari lampiran email
string pribadi [] lampiranFileNames;
/**
* Dapatkan atribut sesi email
*/
properti publik getProperties () {
Properti p = properti baru ();
p.put ("mail.smtp.host", this.mailserverhost);
p.put ("mail.smtp.port", this.mailserverport);
p.put ("mail.smtp.auth", validasi? "Benar": "false");
mengembalikan P;
}
Publik string getMailServerHost () {
kembali MailServerhost;
}
public void setMailServerHost (string mailserverhost) {
this.mailserverhost = mailserverhost;
}
Public String getMailServerport () {
kembali MailServerport;
}
public void setMailServerport (String MailServerport) {
this.mailserverport = mailserverport;
}
public boolean isValidate () {
kembali validasi;
}
public void setValidate (boolean validate) {
this.validate = validasi;
}
string publik [] getAttachFileNames () {
kembalikan lampiran nama;
}
public void setattachFileNames (string [] fileNames) {
this.attachfileNames = nama file;
}
string publik getFromAddress () {
kembali dari address;
}
public void setfromAddress (String fromAddress) {
this.fromAddress = fromAddress;
}
Public String getPassword () {
mengembalikan kata sandi;
}
public void setPassword (string password) {
this.password = kata sandi;
}
public string getToadDress () {
Kembali toaddress;
}
public void setoaddress (String toAddress) {
this.toaddress = toaddress;
}
string publik getUserName () {
mengembalikan nama pengguna;
}
public void setusername (string username) {
this.username = nama pengguna;
}
string publik getSubject () {
subjek pengembalian;
}
public void setSubject (string subjek) {
this.subject = subjek;
}
Public String getContent () {
mengembalikan konten;
}
public void setContent (String TextContent) {
this.content = TextContent;
}
}
Kelas Kedua: SimpleMailsender.java
Salinan kode adalah sebagai berikut:
paket com.util.mail;
impor java.util.date;
impor java.util.properties;
impor javax.mail.address;
impor javax.mail.bodypart;
impor javax.mail.message;
impor javax.mail.messagingException;
impor javax.mail.multipart;
impor javax.mail.Session;
impor javax.mail.transport;
impor javax.mail.internet.internetaddress;
impor javax.mail.internet.imebodypart;
impor javax.mail.internet.mimemessage;
impor javax.mail.internet.mimemultipart;
/**
* Mail Sederhana (surat tanpa lampiran) Pengirim
*/
kelas publik simplemailsender {
/**
* Kirim email dalam format teks
* @param mailInfo informasi tentang email yang akan dikirim
*/
public boolean sendtextmail (mailsenderinfo mailInfo) {
// Tentukan apakah otentikasi identitas diperlukan
MyAuthenticator Authenticator = NULL;
Properties Pro = MailInfo.getProperties ();
if (mailinfo.isValidate ()) {
// Jika otentikasi identitas diperlukan, buat authenticator kata sandi
authenticator = myAuthenticator baru (mailInfo.getusername (), mailinfo.getPassword ());
}
// Bangun sesi untuk mengirim email berdasarkan properti sesi email dan validator kata sandi
Sesi sendmailSession = session.getDefaultInstance (Pro, authenticator);
mencoba {
// Buat pesan email berdasarkan sesi
Pesan mailmessage = mimemessage baru (sendmailsession);
// Buat alamat pengirim email
Alamat dari = new internetAddress (mailInfo.getFromAddress ());
// Atur pengirim pesan email
MailMessage.setFrom (dari);
// Buat alamat penerima email dan atur ke pesan email
Alamat ke = InternetAddress baru (mailinfo.gettoaddress ());
mailmessage.setrecipient (message.recipienttype.to, to);
// Tetapkan subjek pesan email
mailmessage.setsubject (mailinfo.getSubject ());
// Tetapkan waktu untuk mengirim pesan email
mailmessage.setsentDate (tanggal baru ());
// Atur konten utama dari pesan email
String mailcontent = mailInfo.getContent ();
mailmessage.setText (mailcontent);
// Kirim surat
Transport.Send (MailMessage);
Kembali Benar;
} catch (MessagingException ex) {
Ex.PrintStackTrace ();
}
mengembalikan false;
}
/**
* Kirim email dalam format html
* @param mailinfo informasi surat untuk dikirim
*/
public static boolean sendhtmlmail (mailsenderinfo mailInfo) {
// Tentukan apakah otentikasi identitas diperlukan
MyAuthenticator Authenticator = NULL;
Properties Pro = MailInfo.getProperties ();
// Jika otentikasi identitas diperlukan, buat authenticator kata sandi
if (mailinfo.isValidate ()) {
authenticator = myAuthenticator baru (mailInfo.getusername (), mailinfo.getPassword ());
}
// Bangun sesi untuk mengirim email berdasarkan properti sesi email dan validator kata sandi
Sesi sendmailSession = session.getDefaultInstance (Pro, authenticator);
mencoba {
// Buat pesan email berdasarkan sesi
Pesan mailmessage = mimemessage baru (sendmailsession);
// Buat alamat pengirim email
Alamat dari = new internetAddress (mailInfo.getFromAddress ());
// Atur pengirim pesan email
MailMessage.setFrom (dari);
// Buat alamat penerima email dan atur ke pesan email
Alamat ke = InternetAddress baru (mailinfo.gettoaddress ());
// pesan.recipienttype.to atribut menunjukkan bahwa tipe penerima adalah
mailmessage.setrecipient (message.recipienttype.to, to);
// Tetapkan subjek pesan email
mailmessage.setsubject (mailinfo.getSubject ());
// Tetapkan waktu untuk mengirim pesan email
mailmessage.setsentDate (tanggal baru ());
// MiniMultipart Class adalah kelas kontainer yang berisi objek tipe mimebodypart
Multipart mainpart = mimemultipart baru ();
// Buat mimebodypart yang berisi konten html
Bodypart html = mimebodypart baru ();
// atur konten html
html.setContent (mailInfo.getContent (), "text/html; charset = utf-8");
mainpart.addbodypart (html);
// Atur objek minimultipart untuk mengirimkan konten
MailMessage.setContent (MainPart);
// Kirim surat
Transport.Send (MailMessage);
Kembali Benar;
} catch (MessagingException ex) {
Ex.PrintStackTrace ();
}
mengembalikan false;
}
}
Kategori ketiga: myauthenticator.java
Salinan kode adalah sebagai berikut:
paket com.util.mail;
impor javax.mail.*;
Kelas publik myAuthenticator memperluas authenticator {
String username = null;
String password = null;
myauthenticator publik () {
}
Public myAuthenticator (string username, string password) {
this.username = nama pengguna;
this.password = kata sandi;
}
kata sandi yang dilindungi getPasswordAuthentication () {
mengembalikan kata sandi baru (nama pengguna, kata sandi);
}
}
Berikut ini adalah kode menggunakan tiga kelas di atas:
Salinan kode adalah sebagai berikut:
public static void main (string [] args) {
// kelas ini terutama mengatur email
Mailsenderinfo mailinfo = mailsenderinfo baru ();
mailinfo.setmailserverhost ("smtp.163.com");
MailInfo.setMailServerport ("25");
MailInfo.setValidate (true);
mailinfo.setusername ("[email protected]");
MailInfo.setPassword ("*********"); // Kata Sandi Email Anda
mailinfo.setfromaddress ("[email protected]");
mailinfo.settoaddress ("[email protected]");
MailInfo.setsubject ("Set Judul Kotak Surat");
mailInfo.setContent ("Set Konten Kotak Surat");
// Kelas ini terutama mengirim email
SMSEMAILSENDER SMS = new SimpleMailsender ();
sms.sendTextMail (mailInfo); // Kirim format teks
sms.sendhtmlmail (mailinfo); // kirim format html
}
Akhirnya, izinkan saya memberi Anda perhatian pada:
1. Menggunakan kode ini, Anda dapat menyelesaikan fungsi pengiriman email javamail Anda. Ketiga kategori ini sangat diperlukan.
2. Saya menggunakan paket com.util.mail untuk mengemas tiga kelas ini.
3. Jangan gunakan alamat email yang baru saja Anda terdaftar untuk mengirim email dalam program ini. Karena Anda tidak dapat mengirimkannya. Alamat email yang baru saja Anda daftarkan tidak akan memberi Anda izin seperti itu, yang berarti Anda tidak dapat melewati verifikasi. Anda perlu menggunakan alamat email yang sering Anda gunakan, dan butuh waktu lama.
4. Masalah lain adalah dua kalimat dari MailInfo.setmailserverhost ("smtp.163.com"); Artinya, jika Anda menggunakan server 163SMTP, maka Anda harus menggunakan alamat email 163 untuk mengirim alamat email.
5. Ada banyak penjelasan di internet tentang kesalahan verifikasi javamail, tetapi saya hanya melihatnya. Ini kategori ketiga saya. Selama Anda menyalin semua kode, saya pikir tidak akan ada masalah.