<a href="mailto:ymotoba@gmail.com?subject=けんめいです&cc=hogehogehoge@hoge.com&body=本文です">TEST</a>
これは問題なし。
ダブルクォーテーションとかどーすんだって話なのでgoogle先生に聞いてみると・・・
URLエンコードすれば大丈夫のようだ。
http://shimax.cocolog-nifty.com/search/2007/02/vistawindows_ma_c78c.html
が参考させて頂いたURL。
でもURLエンコードするとメーラによっては文字化けする模様。
上記URLでの結論にもあるが、プリセットでどんなメーラでも文字化けしないようにするのは無理なようです。
ってことなので、Javaでメールクラスを公開してみます。
結局これでも無理な気がするなー。おいらのPCのThunderBirdでしか試してないから問題あるのかどうかわからん・・・。まぁ、今回のところはこれでいいや。
Java Mail API が必要なので、以下からDLして下さい。m(__)m
http://java.sun.com/products/javamail/
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
/**
* メールユーティリティクラス
*/
public class Mail {
/** メール文字コード */
private static final String SEND_MAIL_CHARSET = "iso-2022-jp";
/** SMTPサーバ */
private String smtpserver;
/** 送信元メールアドレス */
private String mailaddrfrom;
/** 送信者の名前 */
private String namefrom;
/** 送信先メールアドレス */
private String mailaddrto;
/** メールタイトル */
private String subject;
/** 本文 */
private String body;
/**
*
* メール送信のパラメータチェック
*
*
* @return true or false
*/
private boolean validateSendParam() {
if (this.smtpserver == null || this.mailaddrfrom == null
|| this.mailaddrto == null || this.subject == null
|| this.body == null) {
return false;
}
if (this.smtpserver.isEmpty() || this.mailaddrfrom.isEmpty()
|| this.mailaddrto.isEmpty() || this.subject.isEmpty()
|| this.body.isEmpty()) {
return false;
}
return true;
}
/**
*
* メールを送信します
* SMTPサーバの情報、送信元メールアドレス等々送信に必要な情報は
* 本メソッドのクラス変数に設定して下さい
* クラス変数に必要な情報が設定されていない場合、IllegalArgumentExceptionが発生します
*
*
* @throws MessagingException MessagingException
*/
public void send() throws MessagingException {
// パラメータチェック
if (!validateSendParam()) {
throw new IllegalArgumentException();
}
Session session = Session.getDefaultInstance(new Properties(), null);
session.setDebug(true);
MimeMessage mimeMessage = new MimeMessage(session);
// 送信元メールアドレスと送信者名を指定
try {
mimeMessage.setFrom(new InternetAddress(this.mailaddrfrom,
this.namefrom, SEND_MAIL_CHARSET));
} catch (UnsupportedEncodingException e) {
// エンコーディング固定なので発生しません
// 念の為エラーログだけ出力しておきます
System.out.println(e.getMessage());
}
// 送信先メールアドレスを指定
mimeMessage.setRecipients(Message.RecipientType.TO, this.mailaddrto);
// メールのタイトルを指定
mimeMessage.setSubject(this.subject, SEND_MAIL_CHARSET);
// メール本文を設定
mimeMessage.setText(this.body + "\n", SEND_MAIL_CHARSET);
// メールの形式を指定
mimeMessage.setHeader("Content-Type", "text/plain; charset=\""
+ SEND_MAIL_CHARSET + "\"");
mimeMessage.setHeader("Content-Transfer-Encoding", "7bit");
// 送信日付を指定
mimeMessage.setSentDate(new Date());
// TODO
// とりあえずユーザ、パスワードは未設
Transport transport = session.getTransport("smtp");
transport.connect(this.smtpserver, "", "");
transport.sendMessage(mimeMessage, mimeMessage.getAllRecipients());
transport.close();
}
public String getSmtpserver() {
return smtpserver;
}
public void setSmtpserver(String smtpserver) {
this.smtpserver = smtpserver;
}
public String getMailaddrfrom() {
return mailaddrfrom;
}
public void setMailaddrfrom(String mailaddrfrom) {
this.mailaddrfrom = mailaddrfrom;
}
public String getNamefrom() {
return namefrom;
}
public void setNamefrom(String namefrom) {
this.namefrom = namefrom;
}
public String getMailaddrto() {
return mailaddrto;
}
public void setMailaddrto(String mailaddrto) {
this.mailaddrto = mailaddrto;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getBody() {
return body;
}
public void setBody(String body) {
this.body = body;
}
}
0 コメント:
コメントを投稿