天蓝色托管网络应用程序上的HTML联系表单

时间:2015-10-05 16:08:38

标签: php html5 azure phpmailer office365

我有phpmailer附带的基本HTML模板,它使用STMP

代码就像解压缩一样直接设置。

<?php
session_start();

include("php/simple-php-captcha/simple-php-captcha.php");
include("php/php-mailer/PHPMailerAutoload.php");

// Step 1 - Enter your email address below.
$to = 'you@domain.com';

if(isset($_POST['emailSent'])) {

    $subject = $_POST['subject'];

    // Step 2 - If you don't want a "captcha" verification, remove that IF.
    if (strtolower($_POST["captcha"]) == strtolower($_SESSION['captcha']['code'])) {

        $name = $_POST['name'];
        $email = $_POST['email'];

        // Step 3 - Configure the fields list that you want to receive on the email.
        $fields = array(
            0 => array(
                'text' => 'Name',
                'val' => $_POST['name']
            ),
            1 => array(
                'text' => 'Email address',
                'val' => $_POST['email']
            ),
            2 => array(
                'text' => 'Message',
                'val' => $_POST['message']
            ),
            3 => array(
                'text' => 'Checkboxes',
                'val' => implode($_POST['checkboxes'], ", ")
            ),
            4 => array(
                'text' => 'Radios',
                'val' => $_POST['radios']
            )
        );

        $message = "";

        foreach($fields as $field) {
            $message .= $field['text'].": " . htmlspecialchars($field['val'], ENT_QUOTES) . "<br>\n";
        }

        $mail = new PHPMailer;

        $mail->IsSMTP();                                      // Set mailer to use SMTP
        $mail->SMTPDebug = 0;                                 // Debug Mode

        // Step 4 - If you don't receive the email, try to configure the parameters below:

        //$mail->Host = 'mail.yourserver.com';                // Specify main and backup server
        //$mail->SMTPAuth = true;                             // Enable SMTP authentication
        //$mail->Username = 'username';                       // SMTP username
        //$mail->Password = 'secret';                         // SMTP password
        //$mail->SMTPSecure = 'tls';                          // Enable encryption, 'ssl' also accepted

        $mail->From = $email;
        $mail->FromName = $_POST['name'];
        $mail->AddAddress($to);
        $mail->AddReplyTo($email, $name);

        $mail->IsHTML(true);

        $mail->CharSet = 'UTF-8';

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

        // Step 5 - If you don't want to attach any files, remove that code below
        if (isset($_FILES['attachment']) && $_FILES['attachment']['error'] == UPLOAD_ERR_OK) {
            $mail->AddAttachment($_FILES['attachment']['tmp_name'], $_FILES['attachment']['name']);
        }

        if($mail->Send()) {
            $arrResult = array('response'=> 'success');
        } else {
            $arrResult = array('response'=> 'error', 'error'=> $mail->ErrorInfo);
        }

    } else {

        $arrResult['response'] = 'captchaError';

    }

}
?>

在设置每个变量之后,包括步骤4的所有变量。即使使用调试3,我也会继续获得SMTP connect() failed.。我们的销售电子邮件使用Outlook。

因此我认为其中一个问题是该网站托管在Azure上。

我想要做的另一件事是使用他们的API为联系表单设置office 365。有一些javascript代码,但无法识别authContext = new O365Auth.Context();

我们只需要一种方法来填写基本联系表单,并通过电子邮件发送给我们的sales@email.com我已经没有想法来完成此操作。这并不重要,但我是azure的新手而且我被卡住了。

1 个答案:

答案 0 :(得分:2)

不确定是否与其他SMTP服务器集成,但您可以使用SendGrid执行此任务,并且它可以释放多达25k条消息。只需从门户网站浏览Azure Marketplace并将其添加到Azure订阅。

https://azure.microsoft.com/en-us/marketplace/partners/sendgrid/sendgrid-azure/

使用PHP进行集成非常简单。他们推荐他们的PHP库,但你可以使用Curl来完成这项工作:

<?php

$url = 'https://api.sendgrid.com/';
$user = 'USERNAME';
$pass = 'PASSWORD';

$params = array(
    'api_user'  => $user,
    'api_key'   => $pass,
    'to'        => 'example3@sendgrid.com',
    'subject'   => 'testing from curl',
    'html'      => 'testing body',
    'text'      => 'testing body',
    'from'      => 'example@sendgrid.com',
  );


$request =  $url.'api/mail.send.json';

// Generate curl request
$session = curl_init($request);
// Tell curl to use HTTP POST
curl_setopt ($session, CURLOPT_POST, true);
// Tell curl that this is the body of the POST
curl_setopt ($session, CURLOPT_POSTFIELDS, $params);
// Tell curl not to return headers, but do return the response
curl_setopt($session, CURLOPT_HEADER, false);
// Tell PHP not to use SSLv3 (instead opting for TLS)
curl_setopt($session, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);

// obtain response
$response = curl_exec($session);
curl_close($session);

// print everything out
print_r($response);

?>

https://sendgrid.com/docs/Integrate/Code_Examples/php.html