スレッド表示 | フラット表示〕 全トピック 920 件中 513 番目 次≫ ≪前

BlatJでメール送信

created: 2004-12-05 01:49 | modified: 2004-12-07 19:34 | reply: 2

[1962] BlatJでメール送信

user: サガ | created: 2004-12-05 01:49
どうも。
お世話になっております。

BlatJを使ってメールを送りたいのですがうまくいきません。
Perl用のプログラムコードを見よう見真似でPHP用に書いたのですがメールが送信されないのです。
それぞれのプログラムコードは以下のとおりです。
# Perl版


# BlatJパス
$blatj = 'c:\server\mail\blatj.exe';

# 送信先メールアドレス
$mailto = 'info@mail.address.com';

# メールタイトル
$subject = '件名';

# 本文
$mbody = "ここにメッセージ";

# 一時ファイル書き出し
$tmpfile = "./$$.tmp";
open(TMP,">$tmpfile");
print TMP $mbody;
close(TMP);

# 送信処理
open(MAIL,"| $blatj $tmpfile -t $mailto -s \"$subject\" -q");
close(MAIL);

# 一時ファイル削除
unlink($tmpfile);

# PHP版


# BlatJパス
$blatj = 'c:\server\mail\blatj.exe';

# 送信先メールアドレス
$mailto = 'info@mail.address.com';

# メールタイトル
$subject = '件名';

# 一時ファイルを書き出し
$tmpfile = tempnam('./','tmp');
$fp = fopen($tmpfile,"w");
fwrite($fp,"ここにメッセージ。\n");
fclose($fp);

# 送信処理
if ( $mail = popen("| $blatj $tmpfile -t $mailto -s \"$subject\" -q","w") ) { print "送信完了"; }
pclose($mail);

# 一時ファイル削除
unlink($tmpfile);
reply: 1963 返信 編集 削除

[1963] popen()の最初の「|」がいらない

user: シロウ | created: 2004-12-06 13:32
popen("| ……
最初の「|」が原因ではないでしょうか。

http://jp2.php.net/manual/ja/function.popen.php

コマンドを実行しているだけなのでexec()関数を使うのでもよいと思います。

http://jp2.php.net/manual/ja/function.exec.php


また、関係ないかもしれませんがphp.iniにSMTPの設定箇所がありWindowsの場合
そこを設定するとmail()関数でSMTPが扱えます。

http://jp2.php.net/manual/ja/ref.mail.php
http://jp2.php.net/manual/ja/function.mb-send-mail.php

PEARのSMTP
<?php
require 'Net/SMTP.php';
 
mb_language('Japanese'); // マルチバイトを日本語に設定
mb_internal_encoding("EUC-JP"); // 内部エンコーディングをEUC-JPへ
 
$host = 'mail.example.com'; // SMTPサーバ
$from = 'info@example.net'; // 送信元

// 送信先複数設定
$rcpt = array('test@example.co.jp', 'test2@example.ne.jp');
 
// 送信元エンコード
$f_name = mb_convert_encoding('メール送信', "ISO-2022-JP", "EUC_JP");
$f_name = mb_encode_mimeheader($f_name,"ISO-2022-JP", "Q");
 
// 件名エンコード
$subject = mb_convert_encoding('SMTPメール', "ISO-2022-JP", "EUC_JP");
$subject = mb_encode_mimeheader($subject,"ISO-2022-JP", "Q");
 
// ヘッダー作成
$header = "From: \"".$f_name."\" <".$from.">\n";
$header .= "To: test@example.ne.jp\n";
$header .= "Subject: ".$subject."\n";
 
// 本文作成
$body = mb_convert_encoding("本文1行目\n本文2行目", "ISO-2022-JP", "EUC_JP");
 
/* Create a new Net_SMTP object. */
if (! ($smtp = new Net_SMTP($host))) {
die("Unable to instantiate Net_SMTP object\n");
}
 
/* Connect to the SMTP server. */
if (PEAR::isError($e = $smtp->connect())) {
die($e->getMessage() . "\n");
}
 
/* Send the 'MAIL FROM:' SMTP command. */
if (PEAR::isError($smtp->mailFrom($from))) {
die("Unable to set sender to <$from>\n");
}
 
/* Address the message to each of the recipients. */
foreach ($rcpt as $to) {
if (PEAR::isError($res = $smtp->rcptTo($to))) {
die("Unable to add recipient <$to>: " . $res->getMessage() . "\n");
}
}
 
/* Set the body of the message. */
if (PEAR::isError($smtp->data($header . "\r\n" . $body))) {
die("Unable to send data\n");
}
 
/* Disconnect from the SMTP server. */
$smtp->disconnect();
?>
SMTPで認証が必要な場合もPEARのもので対応できます。

http://pear.php.net/package/Net_SMTP
http://pear.php.net/manual/ja/package.mail.mail.php
Parent: 1962  reply: 1972 返信 編集 削除

[1972] ありがとうございました

user: サガ | created: 2004-12-07 19:34
無事解決することができました。
ありがとうございました。
Parent: 1963  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 513 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑