4

たとえば、localhost から gmail サーバー (anydomain@gmail.com) にメールを送信したいと考えています。

コードサンプルは次のとおりです。

<?php 
$to = "thisizraheel@gmail.com";
$subject = "Hi!";
$body = "Hi,\n\nHow are you?";

if (mail($to, $subject, $body)) {
    echo("<p>Message successfully sent!</p>");
} else {
    echo("<p>Message delivery failed...</p>");
}
?>

また、php.ini の smtp 設定を次のように変更しました。

SMTP = mail.gmail.com   
smtp_port = 25

しかし、まだ機能していません。関数 mail() は機能していません。私を助けてください

4

6 に答える 6

1

Gmail で SMTP サーバーを使用してみてください。

ini_set("SMTP","ssl://smtp.gmail.com");
ini_set("smtp_port","465");

よく読んだ

gmailでローカルホストからメールを送信する

于 2013-02-05T13:55:42.687 に答える
1

このコード スニペットを Python で実行すると、localhost でサーバーをセットアップできます。php.ini で何も変更する必要はありません。(php.ini では、smtp は localhost、ポートは 25 である必要があります。デフォルト設定)。お役に立てれば。:)

import smtpd
import smtplib
import asyncore
class SMTPServer(smtpd.SMTPServer):

    def __init__(*args, **kwargs):
        print "Running smtp server on port 25"
        smtpd.SMTPServer.__init__(*args, **kwargs)

    def process_message(*args, **kwargs):
        to = args[3][0]
        msg = args[4]
        gmail_user = 'yourgmailhere'
        gmail_pwd = 'yourgmailpassword'
        smtpserver = smtplib.SMTP("smtp.gmail.com",587)
        smtpserver.ehlo()
        smtpserver.starttls()
        smtpserver.ehlo
        smtpserver.login(gmail_user, gmail_pwd)
        smtpserver.sendmail(gmail_user, to, msg)
        print 'sent to '+to
        pass

if __name__ == "__main__":
    smtp_server = SMTPServer(('localhost', 25), None)
    try:
        asyncore.loop()
    except KeyboardInterrupt:
        smtp_server.close()
于 2013-02-27T22:22:57.660 に答える
0

100% の作業、私も自分のウェブサイトでこれを使用しています。

<?php
$con=mysql_connect("mysql12","","");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
$db=mysql_select_db("data",$con);
if(!$db)
{
die( 'Could not select database'.mysql_error() );
}

$to=$_POST['to'];
$subject=$_POST['subject'];
$body=$_POST['tarea'];

$query="select fname from table where email='$to'";
$fetch=mysql_query($query);

while ($rows=mysql_fetch_array($fetch)) 
{
 $name=$rows['fname'];


$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= "To:" .$name. "\r\n";
$headers .= 'From: <abcd@gmail.com>' . "\r\n";
mail($to, $subject, $body, $headers);
}
于 2013-02-05T13:58:52.957 に答える
0

Colin Morelli は、gmail の smtp サーバーを使用するには認証 (ログイン) する必要があるという点で正しいです。以下は作業コードです。参考文献 PHP ページから GMail SMTP サーバーを使用してメールを送信する

<?php

       require_once "Mail.php";

        $from = "<from.gmail.com>";
        $to = "<to.yahoo.com>";
        $subject = "Hi!";
        $body = "Hi,\n\nHow are you?";

        $host = "ssl://smtp.gmail.com";
        $port = "465";
        $username = "myaccount@gmail.com";  //<> give errors
        $password = "password";

        $headers = array ('From' => $from,
          'To' => $to,
          'Subject' => $subject);
        $smtp = Mail::factory('smtp',
          array ('host' => $host,
            'port' => $port,
            'auth' => true,
            'username' => $username,
            'password' => $password));

        $mail = $smtp->send($to, $headers, $body);

        if (PEAR::isError($mail)) {
          echo("<p>" . $mail->getMessage() . "</p>");
         } else {
          echo("<p>Message successfully sent!</p>");
         }

    ?>  <!-- end of php tag-->

PSあなたはただできません:

<?php
// The message
$message = "Line 1\r\nLine 2\r\nLine 3";

// In case any of our lines are larger than 70 characters, we should use wordwrap()
$message = wordwrap($message, 70, "\r\n");

// Send
mail('caffeinated@example.com', 'My Subject', $message);
?>

参考文献 http://php.net/manual/en/function.mail.php

編集:

サーバー mod を作成せずに FTP でスローできる単純なクラスを使用する場合は、PHPMailer を使用します。

require_once('../class.phpmailer.php');
//include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded

$mail             = new PHPMailer();

$body             = file_get_contents('contents.html');
$body             = eregi_replace("[\]",'',$body);

$mail->IsSMTP(); // telling the class to use SMTP
$mail->Host       = "mail.yourdomain.com"; // SMTP server
$mail->SMTPDebug  = 2;                     // enables SMTP debug information (for testing)
                                           // 1 = errors and messages
                                           // 2 = messages only
$mail->SMTPAuth   = true;                  // enable SMTP authentication
$mail->SMTPSecure = "tls";                 // sets the prefix to the servier
$mail->Host       = "smtp.gmail.com";      // sets GMAIL as the SMTP server
$mail->Port       = 587;                   // set the SMTP port for the GMAIL server
$mail->Username   = "yourusername@gmail.com";  // GMAIL username
$mail->Password   = "yourpassword";            // GMAIL password

$mail->SetFrom('name@yourdomain.com', 'First Last');

$mail->AddReplyTo("name@yourdomain.com","First Last");

$mail->Subject    = "PHPMailer Test Subject via smtp (Gmail), basic";

$mail->AltBody    = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test

$mail->MsgHTML($body);

$address = "whoto@otherdomain.com";
$mail->AddAddress($address, "John Doe");

$mail->AddAttachment("images/phpmailer.gif");      // attachment
$mail->AddAttachment("images/phpmailer_mini.gif"); // attachment

if(!$mail->Send()) {
  echo "Mailer Error: " . $mail->ErrorInfo;
} else {
  echo "Message sent!";
}

参考文献 http://phpmailer.worxware.com/index.php?pg=examplebgmail

于 2013-02-05T14:02:16.250 に答える
0

php.ini の SMTP 設定は、Windows ホストでのみ機能します。

Windows システムを実行していない場合は、適切なクラスを使用して SMPT 機能を実装するか、それに応じてローカルの sendmail/MTA を構成する必要があります。

于 2013-02-05T14:03:25.887 に答える
0

わかりました、少し前にこれに出くわした問題がわかりました

メール サーバー pop3 サーバーまたは smtp が必要です。静的 IP とドメイン名のサーバーが必要です。つまり、localhost は機能しません。

これを設定してください CURL My Curl Function はそれに応じて調整します

    function CurlMail($The_mail, $The_FamKey, $The_Service ,$The_Client)
{

        //create array of data to be posted

        $post_data['email'] = $The_mail;
        $post_data['FamilyKey'] = $The_FamKey;
        $post_data['Service'] = $The_Service;
        $post_data['Client'] = $The_Client;

        //traverse array and prepare data for posting (key1=value1)
        foreach ( $post_data as $key => $value) 
                {
                    $post_items[] = $key . '=' . $value;
                }
        //create the final string to be posted using implode()
        $post_string = implode ('&', $post_items);
        //create cURL connection
        $curl_connection =  curl_init('http://foo.com/mail.php');
        //set options
        curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 30);
        curl_setopt($curl_connection, CURLOPT_USERAGENT,  "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
        curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, 0);
        //set data to be posted
        curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $post_string);
        //perform our request
        $result = curl_exec($curl_connection);
        //show information regarding the request
        print_r(curl_getinfo($curl_connection));
        echo curl_errno($curl_connection) . '-' .curl_error($curl_connection);
        //close the connection
        curl_close($curl_connection);
    }

次に、SMTP がセットアップされたライブサーバーで、これらの詳細について php.ini を参照してください MAIL.PHP

ini_set('SMTP', "127.0.0.1");
ini_set('smtp_port', "25");

 $to = "abc@gmail.com";
 $subject = "Test mail";
 $message = "Hello! This is a simple email message.";
 $from = "jono@bay.org";
 $headers = "From:" . $from;
 mail($to,$subject,$message,$headers);
 echo "Mail Sent.";
于 2013-02-05T15:01:18.850 に答える