Spring Java Mailメール
今日springのメールを送る机能の下でコードをテストして出会った问题を言います
まずアプリケーションContext.xmlでメール情報を設定します
mailManagerクラス
テストコード:
質問:1 java.lang.NoClassDefFoundError:javax/mail/MessagingExceptionのエラーが発生しました
ネット上の解決方法:
j 2 ee 1.4のactivation.jarとmail.jarパッケージをプロジェクトにコピーし、再配置し、問題を解決します.
Spring送信メールは実際にJava Mailクラスライブラリを使用しており、これはJavaEE標準クラスライブラリのドイツの一部であり、SpringはJava Mailのみをパッケージ化している.ただしJDK 5以上の環境ではjava EE 5が持つJava Mailクラスライブラリに問題があるためJ 2 EE 1.4のjava Mailを使用する.そこでJ 2 EE 1.4のメール関連パッケージ,すなわちactivation.jar,mail.jarを追加する. 2.Could not connect to SMTP host: "smtp.163.com ", port: 25;
しばらくはどうしたのか分かりませんが、ping smtp.163.comはping通です.ネット上で調べてみると、ウイルス対策ソフトに関係していると言っています.ファイアウォールに関係しています.メールボックスの問題の私は試しても役に立ちません.私はqqを使います 163やってみてもだめだったので、最後にうちの会社のメールで送信に成功しました.メールボックスは迷惑メール防止のため2006年以降に申請した163メールボックスで、いずれもSTMPのサービスが開通しておらず、クライアントからメールを送ることができないという.真偽を知らない
また、McAfeeをオフにすればいいという話もありますが、McAfeeは何をテストしていないのか分かりません.
3.java.lang.NoClassDefFoundError:com/sun/mail/util/LineInputStreamエラー
ネット上の解決方法:Exception in thread"main"java.lang.NoClassDefFoundError:com/sun/mail/util/LineInputStream上記のエラーが発生した場合、メールの受信から遠くないことをおめでとうございます.そうしないと、すべての異常を解決してからこの投稿を見てください.
JAvax.mailとjavax.activationの2つのパッケージはすでにjavaEE 5の中で基礎パッケージに属しています.JDKにはすでに持っていますが、中の方法は今の外のmail.jarとactivation.jarといくつかの違いがあるので、初心者が直接copyの他の人のコードを作るときに上記のエラーが発生することが多いです.くだらないことを言わないで、次は解決方法です.
X:\Program Files\MyEclipse 6.5\myeclipse\eclipse\plugins\com.genuitec.eclipse.j2eedt.core_6.5.0.zmyeclipse650200806\data\libraryset\EE_5
このパスでは、javaee.jarが見えます.rarでこのファイルを開き、javaxフォルダに入り、mail.jarとactivation.jarを削除します(私のjavaee.jarでは、この2つのものはフォルダですが、とにかく削除すればOKですが、バックアップに注意してください) この问题は上记の通り解决していません(私が使っているMyEclipse 8.5の経路があまり违うので削除し间违ったかもしれません!)后でJ 2 EE 1.4に変更して解决します
COPY他の人のいくつかの資料
163メールボックス POP 3サーバ:pop 3.163.com SMTPサーバー:smtp.163.com Yahooメールボックス POP 3サーバ:pop.mail.yahoo.com.cn SMTPサーバー:smtp.mail.yahoo.com メールボックス POP 3サーバ:pop 3.sohu.com SMTPサーバー:smtp.sohu.com 新浪メールボックス POP 3サーバ:pop.sina.com.cnまたはpop 3.sina.com.cn SMTPサーバー:smtp.sina.com.cn smtpサーバの認証要求オプションを選択してください 139メールボックス POP 3サーバ:pop 3.139.com SMTPサーバー:smtp.139.com Gmailメールボックス POP 3サーバ:pop.gmail.com ポート:995 sslを開く SMTPサーバー:smtp.gmail.com ポート:465または587 sslを開く アカウントはユーザー名で、パスワードは同じで、メールアドレスは[email protected] QQメールボックス POP 3サーバ:pop.q.com SMTPサーバー:smtp.qq.com SMTPサーバはjava.lang.ClassNotFoundException:javax.mail.MessagingException tomcatがJavaMailのAPIクラスを認識していない理由を認証する必要があります.すべてのAPIがjavaee.jarで見つけられると思っていたので、このjarパッケージをWEB-INF下のlibディレクトリにコピーしてしまい、結局ダメでした.tomcatのlibディレクトリにコピーすると、java.lang.NoSuchMethodError:javax.servlet.ServertContext.getContextPath()Ljava/lang/String;実はjar競合の問題なので、tomcatディレクトリの下のlibディレクトリにコピーしたばかりのjavaee.jarを削除して、サーバーを起動することができます.しかし、tomcatがJavaMail APIを見つけることができないという問題は解決されず、mail.jarをダウンロードしてWEB-INFの下のlibディレクトリに置くだけで、結果はいいです.
追加してまたQQのメールボックスの設定で発送することができることを調べました 設定手順は次のとおりです. :
1.メールボックスに入る-->設定-->口座-->pop 3/SMTPサービスチェック(IMAP/STMTPサービスもありますが、どれを選んでも具体的にテストしていないので、私は選んでいます)して保存OK;
2.アプリケーション.xmlのhostプロパティをsmtp.qq.comに設定 その他の注意
以上のように修正してメールを送ることができます(現在はテキストだけで添付ファイルや画像を送ることもできます)が、送信するメールの数には制限があるようです.
ソースダウンロードアドレス:download.csdn.net/detail/nn 955/4655282
html形式で添付ファイル付きのメールを送信します.
参考原文:http://www.iteye.com/topic/348564
まずアプリケーションContext.xmlでメール情報を設定します
<bean id="mailSender"
class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host">
<value>"smtp.163.com"</value>
</property>
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.smtp.starttls.enable">true</prop>
<prop key="mail.smtp.timeout">25000</prop>
</props>
</property>
<property name="username">
<value>[email protected]</value>
</property>
<property name="password">
<value>xxxxxx</value>
</property>
</bean>
<!-- mailbox.dxsport.com.cn, port: 25 -->
<!-- -->
<bean id="mailManager" class="com.wfy.email.MailManager">
<property name="mailSender" ref="mailSender" />
<property name="textTemplate">
<value><![CDATA[
%1$s %2$tF .
System Administrator.
]]></value>
</property>
</bean>
mailManagerクラス
package com.wfy.email;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
public class MailManager {
private JavaMailSender mailSender;
private String textTemplate;//
private static final String EMAIL_FROM = "[email protected]";
public void setMailSender(JavaMailSender mailSender) {
this.mailSender = mailSender;
}
public void setTextTemplate(String textTemplate) {
this.textTemplate = textTemplate;
}
/**
* .
*/
public void sendNotificationMail(String subject , String content , String toEmail) {
SimpleMailMessage msg = new SimpleMailMessage();//SimpleMailMessage text
msg.setFrom(EMAIL_FROM);// QQ xml ( , Email , xml username ??)
msg.setTo(toEmail);//
msg.setSubject(subject);//
msg.setText(content);//
try {
mailSender.send(msg);//
} catch (Exception e) {
e.printStackTrace();
}
}
}
テストコード:
/**
* @param args
*/
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
MailManager mailManager=(MailManager) ctx.getBean("mailManager");
mailManager.sendNotificationMail("test", " spring !!!!", "[email protected]");
System.out.println(" !!!");
}
質問:1 java.lang.NoClassDefFoundError:javax/mail/MessagingExceptionのエラーが発生しました
ネット上の解決方法:
j 2 ee 1.4のactivation.jarとmail.jarパッケージをプロジェクトにコピーし、再配置し、問題を解決します.
Spring送信メールは実際にJava Mailクラスライブラリを使用しており、これはJavaEE標準クラスライブラリのドイツの一部であり、SpringはJava Mailのみをパッケージ化している.ただしJDK 5以上の環境ではjava EE 5が持つJava Mailクラスライブラリに問題があるためJ 2 EE 1.4のjava Mailを使用する.そこでJ 2 EE 1.4のメール関連パッケージ,すなわちactivation.jar,mail.jarを追加する. 2.Could not connect to SMTP host: "smtp.163.com ", port: 25;
しばらくはどうしたのか分かりませんが、ping smtp.163.comはping通です.ネット上で調べてみると、ウイルス対策ソフトに関係していると言っています.ファイアウォールに関係しています.メールボックスの問題の私は試しても役に立ちません.私はqqを使います 163やってみてもだめだったので、最後にうちの会社のメールで送信に成功しました.メールボックスは迷惑メール防止のため2006年以降に申請した163メールボックスで、いずれもSTMPのサービスが開通しておらず、クライアントからメールを送ることができないという.真偽を知らない
また、McAfeeをオフにすればいいという話もありますが、McAfeeは何をテストしていないのか分かりません.
3.java.lang.NoClassDefFoundError:com/sun/mail/util/LineInputStreamエラー
ネット上の解決方法:Exception in thread"main"java.lang.NoClassDefFoundError:com/sun/mail/util/LineInputStream上記のエラーが発生した場合、メールの受信から遠くないことをおめでとうございます.そうしないと、すべての異常を解決してからこの投稿を見てください.
JAvax.mailとjavax.activationの2つのパッケージはすでにjavaEE 5の中で基礎パッケージに属しています.JDKにはすでに持っていますが、中の方法は今の外のmail.jarとactivation.jarといくつかの違いがあるので、初心者が直接copyの他の人のコードを作るときに上記のエラーが発生することが多いです.くだらないことを言わないで、次は解決方法です.
X:\Program Files\MyEclipse 6.5\myeclipse\eclipse\plugins\com.genuitec.eclipse.j2eedt.core_6.5.0.zmyeclipse650200806\data\libraryset\EE_5
このパスでは、javaee.jarが見えます.rarでこのファイルを開き、javaxフォルダに入り、mail.jarとactivation.jarを削除します(私のjavaee.jarでは、この2つのものはフォルダですが、とにかく削除すればOKですが、バックアップに注意してください) この问题は上记の通り解决していません(私が使っているMyEclipse 8.5の経路があまり违うので削除し间违ったかもしれません!)后でJ 2 EE 1.4に変更して解决します
COPY他の人のいくつかの資料
163メールボックス POP 3サーバ:pop 3.163.com SMTPサーバー:smtp.163.com Yahooメールボックス POP 3サーバ:pop.mail.yahoo.com.cn SMTPサーバー:smtp.mail.yahoo.com メールボックス POP 3サーバ:pop 3.sohu.com SMTPサーバー:smtp.sohu.com 新浪メールボックス POP 3サーバ:pop.sina.com.cnまたはpop 3.sina.com.cn SMTPサーバー:smtp.sina.com.cn smtpサーバの認証要求オプションを選択してください 139メールボックス POP 3サーバ:pop 3.139.com SMTPサーバー:smtp.139.com Gmailメールボックス POP 3サーバ:pop.gmail.com ポート:995 sslを開く SMTPサーバー:smtp.gmail.com ポート:465または587 sslを開く アカウントはユーザー名で、パスワードは同じで、メールアドレスは[email protected] QQメールボックス POP 3サーバ:pop.q.com SMTPサーバー:smtp.qq.com SMTPサーバはjava.lang.ClassNotFoundException:javax.mail.MessagingException tomcatがJavaMailのAPIクラスを認識していない理由を認証する必要があります.すべてのAPIがjavaee.jarで見つけられると思っていたので、このjarパッケージをWEB-INF下のlibディレクトリにコピーしてしまい、結局ダメでした.tomcatのlibディレクトリにコピーすると、java.lang.NoSuchMethodError:javax.servlet.ServertContext.getContextPath()Ljava/lang/String;実はjar競合の問題なので、tomcatディレクトリの下のlibディレクトリにコピーしたばかりのjavaee.jarを削除して、サーバーを起動することができます.しかし、tomcatがJavaMail APIを見つけることができないという問題は解決されず、mail.jarをダウンロードしてWEB-INFの下のlibディレクトリに置くだけで、結果はいいです.
追加してまたQQのメールボックスの設定で発送することができることを調べました 設定手順は次のとおりです. :
1.メールボックスに入る-->設定-->口座-->pop 3/SMTPサービスチェック(IMAP/STMTPサービスもありますが、どれを選んでも具体的にテストしていないので、私は選んでいます)して保存OK;
2.アプリケーション.xmlのhostプロパティをsmtp.qq.comに設定 その他の注意
msg.setFrom(EMAIL_FROM);// xml qq
//javax.mail.MessagingException: 501 mail from address must be same as authorization user
以上のように修正してメールを送ることができます(現在はテキストだけで添付ファイルや画像を送ることもできます)が、送信するメールの数には制限があるようです.
ソースダウンロードアドレス:download.csdn.net/detail/nn 955/4655282
html形式で添付ファイル付きのメールを送信します.
public class SendMail {
public ApplicationContext ctx = null;
public SendMail() {
//
ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
}
public void send() {
// JavaMailSender bean
JavaMailSender sender = (JavaMailSender) ctx.getBean("mailSender");
JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();
MimeMessage mailMessage = senderImpl.createMimeMessage();
// utf-8 GBK ,
MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage,true,"utf-8");
try {
messageHelper.setTo(email.getEmail());//
messageHelper.setFrom("[email protected]");//
messageHelper.setSubject(" ");//
// , true
messageHelper.setText("<html><head></head><body><h1>hello!!chao.wang</h1></body></html>",true);
//
messageHelper.addInline("a", new File("E:/xiezi.jpg"));
messageHelper.addInline("b", new File("E:/logo.png"));
File file=new File("E:/ .rar");
// , MimeUtility.encodeWord()
messageHelper.addAttachment(MimeUtility.encodeWord(file.getName()), file);
sender.send(mailMessage);
} catch (Exception e) {
e.printStackTrace();
}
}
参考原文:http://www.iteye.com/topic/348564