تعلمت عن Javamail اليوم. لراحة الاستخدام في المستقبل ، كتبت قطعة من الكود بنفسي وكتبتها في حزمة جرة لراحة الاستخدام في المستقبل. هيه
الرموز الثلاثة التالية هي كل الكود الخاص بي. لأنني لا أعرف كيفية تحميل حزمة JAR إلى Javaeye ، يعود الأصدقاء ويجعلونها بمفردهم.
يحتوي الكود الخاص بي على ثلاث فئات:
الدرجة الأولى: MailSenderInfo.java
نسخة الكود كما يلي:
حزمة com.util.mail ؛
/**
* المعلومات الأساسية المطلوبة لإرسال رسائل البريد الإلكتروني
*/
استيراد java.util.properties ؛
الطبقة العامة mailsenderinfo {
// IP ومنفذ الخادم الذي يرسل البريد
سلسلة الخاصة mailserverhost ؛
سلسلة خاصة mailserverport = "25" ؛
// عنوان مرسل البريد الإلكتروني
سلسلة خاصة من adaddress ؛
// عنوان مستلم البريد الإلكتروني
سلسلة خاصة
// قم بتسجيل الدخول إلى اسم المستخدم وكلمة المرور لخادم إرسال البريد الإلكتروني
اسم المستخدم الخاص بالسلسلة الخاصة ؛
كلمة مرور السلسلة الخاصة ؛
// مصادقة مطلوبة
Boolean Private Depant = false ؛
// موضوع البريد الإلكتروني
موضوع السلسلة الخاصة ؛
// محتوى النص للبريد الإلكتروني
محتوى سلسلة خاصة ؛
// اسم ملف مرفق البريد الإلكتروني
سلسلة خاصة [] إرفاق أسماء ؛
/**
* احصل على سمات جلسة البريد الإلكتروني
*/
الخصائص العامة getProperties () {
الخصائص p = خصائص جديدة () ؛
p.put ("mail.smtp.host" ، this.mailserverhost) ؛
p.put ("mail.smtp.port" ، this.mailserverport) ؛
p.put ("mail.smtp.auth" ، التحقق من صحة؟ "صحيح": "false") ؛
العودة P ؛
}
السلسلة العامة getMailserverHost () {
إرجاع mailserverhost ؛
}
setMailserverHost public void (سلسلة mailserverhost) {
this.mailserverhost = mailserverhost ؛
}
السلسلة العامة getMailserverPort () {
إرجاع mailserverport ؛
}
setMailserverPort public void (سلسلة mailserverport) {
this.mailserverport = mailserverport ؛
}
المنطقية العامة isValidate () {
التحقق من صحة ؛
}
public void setValidate (Boolean Depital) {
this.validate = التحقق ؛
}
السلسلة العامة [] getattachfilenames () {
إرجاع إرفاق أسماء.
}
public public setattachfilenames (سلسلة [] أسماء الملفات) {
this.attachfilenames = أسماء الملفات ؛
}
السلسلة العامة getfromaddress () {
العودة من adaddress.
}
setfromaddress public void (سلسلة من adaddress) {
this.fromaddress = fromaddress ؛
}
السلسلة العامة getPassword () {
إرجاع كلمة المرور ؛
}
public void setPassword (سلسلة كلمة مرور) {
this.password = كلمة المرور ؛
}
السلسلة العامة gettoaddress () {
العودة لودس.
}
public void settoaddress (String Toaddress) {
this.toaddress = toaddress ؛
}
السلسلة العامة getUsername () {
إرجاع اسم المستخدم ؛
}
اسم setusername public void (اسم المستخدم) {
this.username = اسم المستخدم ؛
}
السلسلة العامة getBject () {
موضوع العودة ؛
}
setSubject (موضوع السلسلة) {
this.subject = الموضوع ؛
}
السلسلة العامة getContent () {
إرجاع المحتوى ؛
}
setContent public void (سلسلة textContent) {
this.content = textContent ؛
}
}
الدرجة الثانية: SimpleMailsender.java
نسخة الكود كما يلي:
حزمة com.util.mail ؛
استيراد java.util.date ؛
استيراد java.util.properties ؛
استيراد javax.mail.address ؛
استيراد javax.mail.bodypart ؛
استيراد javax.mail.message ؛
استيراد javax.mail.messagingexception ؛
استيراد javax.mail.multipart ؛
استيراد javax.mail.session ؛
استيراد javax.mail.transport ؛
استيراد javax.mail.internet.internetaddress ؛
استيراد javax.mail.internet.mimebodypart ؛
استيراد javax.mail.internet.mimessage ؛
استيراد javax.mail.internet.mimemultipart ؛
/**
* البريد البسيط (البريد بدون مرفقات) مرسل
*/
الطبقة العامة SimpleMailsender {
/**
* إرسال رسائل البريد الإلكتروني بتنسيق النص
* param mailinfo معلومات حول البريد الإلكتروني المراد إرسالها
*/
SendTextMail المنطقي العام (MailSenderInfo MailInfo) {
// تحديد ما إذا كانت مصادقة الهوية مطلوبة
myauthenticator antainicator = null ؛
Properties Pro = MailInfo.getProperties () ؛
if (mailInfo.isvalidate ()) {
// إذا كانت مصادقة الهوية مطلوبة ، فقم بإنشاء مصادقة كلمة مرور
Australiticator = new myauthenticator (mailInfo.getuserName () ، mailInfo.getPassword ()) ؛
}
// إنشاء جلسة لإرسال رسائل بريد إلكتروني بناءً على خصائص جلسة البريد الإلكتروني ومقحة كلمة المرور
SESSING SENDMailsession = SATES.GETDEFAULTINSTANCE (PRO ، Authenticator) ؛
يحاول {
// إنشاء رسالة بريد بناء على الجلسة
رسالة mailMessage = mimemessage جديد (sendmailsession) ؛
// إنشاء عنوان مرسل البريد الإلكتروني
عنوان من = new InternetAddress (mailInfo.getFromadDress ()) ؛
// اضبط مرسل رسالة البريد الإلكتروني
mailmessage.setfrom (من) ؛
// قم بإنشاء عنوان المستلم للبريد الإلكتروني وقم بتعيينه على رسالة البريد الإلكتروني
العنوان إلى = new InternetAdDress (mailInfo.getToAddress ()) ؛
mailmessage.setRecipient (message.RecipientType.to ، to) ؛
// قم بتعيين موضوع رسالة البريد الإلكتروني
mailmessage.setsubject (mailInfo.getSubject ()) ؛
// قم بتعيين الوقت لإرسال رسائل البريد الإلكتروني
mailmessage.setsentDate (تاريخ جديد ()) ؛
// قم بتعيين المحتوى الرئيسي لرسالة البريد الإلكتروني
سلسلة mailContent = mailInfo.getContent () ؛
mailmessage.settext (mailcontent) ؛
// إرسال البريد
Transport.Send (MailMessage) ؛
العودة صحيح.
} catch (MessagingException ex) {
ex.printStackTrace () ؛
}
العودة كاذبة
}
/**
* إرسال رسائل البريد الإلكتروني بتنسيق HTML
* @param mailinfo معلومات البريد ليتم إرسالها
*/
Sendhtmlmail الثابتة العامة (MailSenderInfo MailInfo) {
// تحديد ما إذا كانت مصادقة الهوية مطلوبة
myauthenticator antainicator = null ؛
Properties Pro = MailInfo.getProperties () ؛
// إذا كانت مصادقة الهوية مطلوبة ، فقم بإنشاء مصادقة كلمة مرور
if (mailInfo.isvalidate ()) {
Australiticator = new myauthenticator (mailInfo.getuserName () ، mailInfo.getPassword ()) ؛
}
// إنشاء جلسة لإرسال رسائل بريد إلكتروني بناءً على خصائص جلسة البريد الإلكتروني ومقحة كلمة المرور
SESSING SENDMailsession = SATES.GETDEFAULTINSTANCE (PRO ، Authenticator) ؛
يحاول {
// إنشاء رسالة بريد بناء على الجلسة
رسالة mailMessage = mimemessage جديد (sendmailsession) ؛
// إنشاء عنوان مرسل البريد الإلكتروني
عنوان من = new InternetAddress (mailInfo.getFromadDress ()) ؛
// اضبط مرسل رسالة البريد الإلكتروني
mailmessage.setfrom (من) ؛
// قم بإنشاء عنوان المستلم للبريد الإلكتروني وقم بتعيينه على رسالة البريد الإلكتروني
العنوان إلى = new InternetAdDress (mailInfo.getToAddress ()) ؛
// message.RecipientType.to تشير السمة إلى أن نوع المتلقي هو
mailmessage.setRecipient (message.RecipientType.to ، to) ؛
// قم بتعيين موضوع رسالة البريد الإلكتروني
mailmessage.setsubject (mailInfo.getSubject ()) ؛
// قم بتعيين الوقت لإرسال رسائل البريد الإلكتروني
mailmessage.setsentDate (تاريخ جديد ()) ؛
// فئة الحد الأدنى هي فئة حاوية تحتوي على كائنات من النوع mimebodypart
Multipart MainPart = جديد mimemultipart () ؛
// إنشاء mimebodypart يحتوي على محتوى HTML
bodypart html = new mimebodypart () ؛
// اضبط محتوى HTML
html.setContent (mailInfo.getContent () ، "text/html ؛ charset = utf-8") ؛
MainPart.AddbodyPart (HTML) ؛
// اضبط كائن MinimultileTipart على محتوى البريد
mailmessage.setContent (MainPart) ؛
// إرسال البريد
Transport.Send (MailMessage) ؛
العودة صحيح.
} catch (MessagingException ex) {
ex.printStackTrace () ؛
}
العودة كاذبة
}
}
الفئة الثالثة: myauthenticator.java
نسخة الكود كما يلي:
حزمة com.util.mail ؛
استيراد javax.mail.*؛
الطبقة العامة myauthenticator يمتد المصادقة {
سلسلة المستخدم = خالية ؛
كلمة كلمة مرور = فارغة ؛
myauthenticator العامة () {
}
MyAuthentIcator العامة (اسم مستخدم السلسلة ، كلمة مرور السلسلة) {
this.username = اسم المستخدم ؛
this.password = كلمة المرور ؛
}
Passwordaustication GetPasswordauthentication () {
إرجاع كلمة مرور جديدة (اسم المستخدم ، كلمة المرور) ؛
}
}
فيما يلي الرمز باستخدام الفئات الثلاثة أعلاه:
نسخة الكود كما يلي:
الفراغ الثابت العام الرئيسي (سلسلة [] args) {
// يقوم هذا الفصل بشكل أساسي بإعداد البريد الإلكتروني
MailSenderInfo MailInfo = new MailSenderInfo () ؛
MailInfo.setMailserverHost ("smtp.163.com") ؛
MailInfo.setMailserverport ("25") ؛
MailInfo.setValidate (true) ؛
MailInfo.setUserName ("[email protected]") ؛
MailInfo.setPassword ("*********") ؛ // كلمة مرور البريد الإلكتروني الخاصة بك
MailInfo.setFromadDress ("[email protected]") ؛
MailInfo.SettoAddress ("[email protected]") ؛
MailInfo.setSubject ("Set Titlebox Title") ؛
MailInfo.setContent ("Set Contbox Content") ؛
// يرسل هذا الفصل رسائل البريد الإلكتروني بشكل أساسي
SimpleMailsender sms = new SimplEmailsender () ؛
sms.sendtextmail (mailInfo) ؛ // إرسال تنسيق النص
sms.sendhtmlmail (mailInfo) ؛ // إرسال تنسيق html
}
أخيرًا ، دعني أعطيك بعض الاهتمام بـ:
1. باستخدام هذا الرمز ، يمكنك إكمال وظيفة إرسال البريد الإلكتروني لـ Javamail. جميع الفئات الثلاث لا غنى عنها.
2. لقد استخدمت حزمة com.util.mail لحزم هذه الفئات الثلاثة.
3. لا تستخدم عنوان البريد الإلكتروني الذي قمت بتسجيله للتو لإرسال رسائل البريد الإلكتروني في البرنامج. لأنه لا يمكنك إرسالها. لن يمنحك عنوان البريد الإلكتروني الذي قمت بتسجيله للتو مثل هذه الأذونات ، مما يعني أنه لا يمكنك تمرير التحقق. تحتاج إلى استخدام عنوان البريد الإلكتروني الذي تستخدمه بشكل متكرر ، ويستغرق وقتًا طويلاً.
4. مشكلة أخرى هي جملتين من mailinfo.setMailserverhost ("smtp.163.com") ؛ هذا هو ، إذا كنت تستخدم خادم 163SMTP ، فيجب عليك استخدام عنوان البريد الإلكتروني 163 لإرسال عنوان البريد الإلكتروني.
5. هناك العديد من التفسيرات على الإنترنت حول أخطاء التحقق من Javamail ، لكنني أرى واحدة فقط. إنها فئتي الثالثة. طالما قمت بنسخ كل الرمز ، أعتقد أنه لن تكون هناك مشكلة.