1

そこで、ユーザーがパスワードを忘れたときに一時的なパスワードを送信して、ログインして変更できるようにするphpスクリプトを作成しました。スクリプトは正常に動作し、電子メールはすべて正しい情報とともに送信されます。私が変えたいのは、それが誰から送られているかということです。ウェブサイト用のGoogleメールアプリを使用してそれらのメールを送信したいのですが、メールはウェブサーバーから送信されています。私のスクリプトの送信部分は次のようになります。

$email_to = $_POST["email"];
$email_from = "Admin@domain.com";
$email_subject = "Account Information Recovery";
$email_message = "Here is your temporary password:\n\n";

$email_message .= "Password: ".$password."\n";
$email_message .= "\nPlease log into your account and immediately change your password.";

// create email headers
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);

しかし、私がメールを受け取ると、それはから来ていAdmin@webserverます。Google のメール アプリを使用してこれらのメールを送信するにはどうすればよいですか?

4

2 に答える 2

2

おそらくPHPMailerを使用するのが最善です:

$mail = new PHPMailer(); 
$mail->IsSMTP(); // enable SMTP
$mail->SMTPDebug = 1; //1 for debugging, spits info out  
$mail->SMTPAuth = true;  
$mail->SMTPSecure = 'ssl'; //needed for GMail
$mail->Host = 'smtp.gmail.com';
$mail->Port = 465; 
$mail->Username = 'google_username';  
$mail->Password = 'google_password';           
$mail->SetFrom($email_from, 'Your Website Name');
$mail->Subject = $email_subject;
$mail->Body = $email_message;
$mail->AddAddress($email_to);
$mail->Send();

注:この例では、SMTPを直接使用して電子メールを送信します。これにより問題が修正されますが、ホストでfsockopenが無効になっている場合は機能しません。

于 2012-10-26T10:45:38.610 に答える
1

Swiftmailerをお勧めします。非常に優れた、十分に文書化されたAPIを備えており、さまざまな種類のトランスポートをすべてサポートしています。

ドキュメントから:

require_once 'lib/swift_required.php';

// Create the Transport
$transport = Swift_SmtpTransport::newInstance('smtp.example.org', 25)
  ->setUsername('your username')
  ->setPassword('your password')
  ;

/*
You could alternatively use a different transport such as Sendmail or Mail:

// Sendmail
$transport = Swift_SendmailTransport::newInstance('/usr/sbin/sendmail -bs');

// Mail
$transport = Swift_MailTransport::newInstance();
*/

// Create the Mailer using your created Transport
$mailer = Swift_Mailer::newInstance($transport);

// Create a message
$message = Swift_Message::newInstance('Wonderful Subject')
  ->setFrom(array('john@doe.com' => 'John Doe'))
  ->setTo(array('receiver@domain.org', 'other@domain.org' => 'A name'))
  ->setBody('Here is the message itself')
  ;

// Send the message
$result = $mailer->send($message);
于 2012-10-26T13:26:53.100 に答える