使用来自PHP的SMTP gmail发送电子邮件 [英] Sending emails using SMTP gmail from PHP

查看:189
本文介绍了使用来自PHP的SMTP gmail发送电子邮件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图通过GMAIL SMTP发送电子邮件。

I am trying to send out emails through GMAIL SMTP from php.

当我点击发送网站得到冷冻一段时间,然后恢复到正常状态当时邮件没有被发送。

When I click on send the website get freezed for some time and then comes to normal state also when the emails are not being sent.

我尝试了ssl-495端口和tls-587端口。

I tried for both ssl - 495 port and tls - 587 port.

 function sendEmail() {

    require_once 'PHPMailer-master/class.phpmailer.php';        
    $email = new PHPMailer();
    $email ->isSMTP();
    $email->SMTPDebug = '1';
    $email->SMTPAuth = true;
    $email->SMTPSecure = 'tls';
    $email->Host = "smtp.gmail.com";
    $email ->port = 587;
    $email->Username = "something@gmail.com";
    $email -> password = "xxxxx";
    $email ->setFrom("something@gmail.com");
    $email -> Subject = "Hello World";
    $email->Body = "Hello this body";
    $email ->addAddress("something@gmail.com");
    if(!$email ->send()){
        echo $email ->ErrorInfo;
    }
    else{
        echo "email sent";
    }
}


推荐答案

<?php
// Send with smtp ssl
// ini_set("SMTP","ssl://smtp.gmail.com");
// ini_set("smtp_port","465");

// Login email and password
$login = "your-email@cool.xx";
$pass = "123456";

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'verify_peer', false);
stream_context_set_option($ctx, 'ssl', 'verify_peer_name', false);
try{
    // echo $socket = stream_socket_client('ssl://smtp.gmail.com:587', $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);
    echo $socket = stream_socket_client('tcp://smtp.gmail.com:587', $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);
    if (!$socket) {
        print "Failed to connect $err $errstr\n";
        return;
    }else{
        // Http
        // fwrite($socket, "GET / HTTP/1.0\r\nHost: www.example.com\r\nAccept: */*\r\n\r\n");
        // Smtp
        echo fread($socket,8192);
        echo fwrite($socket, "EHLO cool.xx\r\n");
        echo fread($socket,8192);

        // Start tls connection
        echo fwrite($socket, "STARTTLS\r\n");
        echo fread($socket,8192);

        echo stream_socket_enable_crypto($socket, true, STREAM_CRYPTO_METHOD_SSLv23_CLIENT);

        // Send ehlo
        echo fwrite($socket, "EHLO cool.xx\r\n");
        echo fread($socket,8192);

        // echo fwrite($socket, "MAIL FROM: <hello@cool.com>\r\n");
        // echo fread($socket,8192);

        echo fwrite($socket, "AUTH LOGIN\r\n");
        echo fread($socket,8192);

        echo fwrite($socket, base64_encode($login)."\r\n");
        echo fread($socket,8192);

        echo fwrite($socket, base64_encode($pass)."\r\n");
        echo fread($socket,8192);

        echo fwrite($socket, "rcpt to: <to-email@boome.com>\r\n");
        echo fread($socket,8192);

        echo fwrite($socket, "DATA\n");
        echo fread($socket,8192);

        echo fwrite($socket, "Date: ".time()."\r\nTo: <to-email@boome.com>\r\nFrom:<zour-email@cool.xx\r\nSubject:Hello from php socket tls\r\n.\r\n");
        echo fread($socket,8192);

        echo fwrite($socket, "QUIT \n");
        echo fread($socket,8192);

        /* Turn off encryption for the rest */
        // stream_socket_enable_crypto($fp, false);

        fclose($socket);
    }
}catch(Exception $e){
    echo $e;
}

这篇关于使用来自PHP的SMTP gmail发送电子邮件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆