2012-02-02 5 views
0
if(mysql_affected_rows()==1) 
      { 
       $msg="To activate your account, please click on the following link:\n\n 

http://localhost:80/activate.php?email=".urlencode($email)."&key=".$activation; 
       if(mail($email,"Registration Confirmation", $msg, "From: [email protected]\r\nX- 

Mailer: php")) 
       { 
        echo '<div> Thank you for registering. A confirmation email has been sent to '. 

$email.'.Please click on the link to activate your account then</div>'; 
       } 
      } 

から電子メールを送信。私はブラウザにエコーされたメッセージを表示して、成功したメーリングを示しています。また、[email protected]からOutlook経由で直接yahooアカウントに電子メールを送信しようとしましたが正常に動作します。誰かが、メール機能を動作させるために、ソーススナップやその他の設定を修正するのを手伝ってもらえますか?どうもありがとうございます。

EDIT:次のようにところで、私はまた私のphp.iniのSTMPスクリプトブロックを設定し、

[mail function] 
; For Win32 only. 
; http://php.net/smtp 
SMTP = mail.mycompany.com 
; http://php.net/smtp-port 
smtp_port = 25 

; For Win32 only. 
; http://php.net/sendmail-from 
sendmail_from = postmaster[email protected] 

は私の問題は、ローカルのメールサーバとしての私のローカルコンピュータを設定することであり、私はPHPをeditted。上記のiniと同じですが、それでも動作しません。

<?php 
function SendMail($from, $to, $subject, $body) 
{ 

require("class.phpmailer.php"); 

$mail = new PHPMailer(); 

$mail->IsSMTP();          
$mail->Host = "mail.mycompany.com"; 
$mail->SMTPAuth = true;  
$mail->Username = "My name"; // SMTP username 
$mail->Password = "mypassword"; // SMTP password = one used in Outlook 

$mail->From = "[email protected]"; 
$mail->FromName = "Registration Confirmation Email"; 
$mail->AddAddress($to); 


$mail->IsHTML(true);         // set email format to HTML 

$mail->Subject = $subject; 
$mail->Body = $body; 


if(!$mail->Send()) 
{ 
    echo "Message could not be sent. <p>"; 
    echo "Mailer Error: " . $mail->ErrorInfo; 

    return false; 
} 

return true; 
} 
?> 

【解決済み】

Iは、上記のコードの切り取り領域がphpmailerのを使用して小さいが、実施例を実証するために含まれます。下のポストでそれを私に紹介してくれてありがとう。

+0

ローカルホストからメールを送信できるかどうかわかりませんでした。 –

+0

コードはWindowsシステム上でホストされていますか? – Repox

+0

何が起こっているのか詳細をお知らせください。エラーはありますか?例外はありますか?これはあなたの問題を理解するために最も重要です。 –

答えて

0

メールヘッダーを調べる必要があります。時間のほとんどの理由は、いずれかです:

  • スキップは、hereを参照してください。詳細についてはFromヘッダーに/
  • スキップX-Mailerの

を返信します。

編集

[OK]を、私は、問題があるかもしれないところ私が知っていると思います。

LAMPとWAMPには大きな違いがあります。 Linuxシステムはsendmailライブラリを持っているので、何も設定せずに他のシステムにメールを送ることができます。 Windowsはそうではありません。

したがって、外部ソースにメールを送信するには、SMTPサーバーがインストールされている必要があります。 detailsのこの質問をご覧ください。

また、テストする必要がある場合は、システムをテストする際に不可欠なPapercutをご覧ください。

プレーンテキストmail()を送信できる場合は、ライブラリからメールを送信することもできます。反対方向ではありません。これを行うために既存のSMTP/IMAPサーバーを使用している場合は例外があります。 Gmail。

2

このスクリプトからあなたもから電子メールを送信することができ、これを試してみてください(Gmailなど)、それは良いと非常に使いやすいですし、あなたがあなたの既存の電子メールアカウントからのメール-Sを送信することができます

1

をphpmailerのを見てみましょうあなたのローカルファイルを外部電子メールに変換します。

require_once('class.phpmailer.php'); 
define('SMTPSERVER', 'mail.yourcompany.com');// sec. smtp server 
define('SMTPUSER', '[email protected]'); // sec. smtp username 
define('SMTPPWD', '123456'); // sec. password 

$useremail = '[email protected]'; 
$msg = 'your text here'; 
$from = '[email protected]'; 
$mailTest=new EmailService(); 
if ($mailTest->generalMailer($useremail, $from, 'Yoursite.com', 'Your company name', $msg)) { 
} else { 
    if (!$mailTest->generalMailer($useremail, $from, 'Yoursite.com', 'Your company name', $msg)) { 
     if (!empty($error)) echo $error; 
    } else { 
     echo 'Yep, the message is send (after hard working)'; 
    } 
} 
header("location:index.php?email_msg=Email sent successfully"); 
0

ローカルマシンにMTA(Mail Transport Agent = Mailserver)がインストールされていることを確認してください。それ以外の場合は、代わりにISPのSMTPサーバーを使用する必要があります。

ほとんどはmail.yourprovider.comまたはsmtp.yourprovider.com(Outlookの送信メールに使用するのと同じホスト名)です。 PHPはそれ自身ではメール送信できません。そのためには、MTA(ローカルまたはリモート)が必要です。

+0

SMTPサーバーをクリアするためにOPを編集しました(私の見通しの中でアカウントのプロパティを訪れた後)。 – user1151711

関連する問題