首页 > 解决方案 > 如何制作一个功能性的 PHP 联系表格,将电子邮件发送到将在 ftp 服务器上发布的网站上的@outlook.com 帐户?

问题描述

我正在建立一个网站,该网站有一个 php 联系表格,该表格将在@outlook.com 地址上发送一封电子邮件。网站将在 ftp 服务器上发布,但在此之前我将其发布在这个免费的https://www.000webhost.com/上,因此我可以测试联系表,但它不起作用。我在某处读到 php mail() 函数不适用于 smtp,所以我尝试使用 PHPMailer,正如我在此处的一些建议中发现的那样(尝试使用在 Microsoft 的 SMTP 服务器上配置的电子邮件地址通过 PHP 发送电子邮件(@live. com、@outlook.com 等))但它也无法正常工作,或者我可能没有正确执行它,因为我不太了解它。代码是在不使用 PHPMailer 的情况下编写的:

PHP:

<?php
if ($_POST["submit"]) {
    if (!$_POST['name']) {
        $error="<br />Please enter your name";
    }
    if (!$_POST['email']) {
        $error.="<br />Please enter your email address";
    }

    if (!$_POST['message']) {
        $error.="<br />Please enter a message";
    }
    if ($_POST['email']!="" AND !filter_var($_POST['email'],FILTER_VALIDATE_EMAIL)) {
        $error.="<br />Please enter a valid email address";
    }
    if ($error) {
        $result='<div class="alert alert-danger"><strong>There were error(s)in your form:</strong>'.$error.'</div>';
    } else {
        if (mail("mymail@outlook.com", "message from website!", "Name: ".$_POST['name']."Email: ".$_POST['email']."message: ".$_POST['message'])) {
            $result='<div class="alert alert-success"><strong>Thank you!</strong> I\'ll be in touch.</div>';
        } else {
            $result='<div class="alert alert-danger">Sorry, there was an error sending your message. Please try again later.</div>';
        }
    } 
} 
?>

HTML:

<div>
<?php echo $result; ?>
<form method="POST" enctype="multipart/form-data ">
    <div class="form-group ">
        <label><h3>Your name:</h3></label>
            <input name="name" type="text " id="exampleInputName" class="form-control" placeholder="Name" value="<?php echo $_POST['name']; ?>">
    </div>
    <div class="form-group ">
        <label><h3>Your e-mail:</h3></label>
        <input name="email" type="email " id="exampleInputEmail" class="form-control" placeholder="name@email.com" value="<?php echo $_POST['email']; ?>">
    </div>
    <div class="form-group ">
        <label><h3>Message:</h3></label>
        <textarea name="message" class="form-control " rows="5" placeholder="Your message... " value="<?php echo $_POST['message']; ?>"></textarea>
    </div>
    <div class="col text-right">
        <div class="form-group ">
            <button class="button" type= "submit" name="submit" value="Submit">send</button>
        </div>
    </div>
</form>
</div>

我尝试使用 PHPMailer 的另一个单独代码看起来像这样,基本上是从这个链接中复制的,获取自定义 php 联系表单以发送电子邮件到交换 365 帐户

<?php
    if ($_POST["submit"]) {

    include("PHPMailer-master/class.PHPMailer.php");

    $mail = new PHPMailer();
    
    $mail->IsSMTP();
    $mail->Host     = "localhost";
    $mail->SMTPAuth = false;
    $mail->Username = "mymail@outlook.com"; #or do i put my account for webhostapp?
    $mail->Password = "my_password_for_outlook";              
    
    $mail->From     = 'https://webpage.000webhostapp.com/';
    $mail->FromName = $_POST['name'];
    
    $mail->AddAddress('mymail@outlook.com'); 
    
    $mail->IsHTML(true);
    
    $mail->Subject  =  'Subject line goes here';
    
    $mail->Body     =  $_POST['message'];
    $mail->AltBody  =  $_POST['message'];
    
    $mail->Send();
}?>

提交表单后的结果

标签: phpemailftpsmtp

解决方案


推荐阅读