6

我正在使用 PHP Mailer 发送电子邮件,我正在使用 SMTP

这是我正在使用的代码:

$email = new PHPMailer();

            $email->IsSMTP(); // telling the class to use SMTP
            $email->Host       = "mail.integradigital.co.uk"; // SMTP server
            $email->SMTPDebug  = 2; // enables SMTP debug information (for testing)
                                                       // 1 = errors and messages
                                                       // 2 = messages only
            $email->SMTPAuth   = true;  // enable SMTP authentication
            $email->Host       = "mail.integradigital.co.uk"; // sets the SMTP server
            $email->Port       = 26;    // set the SMTP port for the GMAIL server
            $email->Username   = "sending@************.co.uk"; // SMTP account username
            $email->Password   = "********";        // SMTP account password

            $email->SetFrom($result["emailfrom"]);
            $email->FromName($result["emailfrom"]);

            $email->Subject   = $result["subject"];
            $email->Body      = $result["message"];

但它从根用户发送和显示- root@localhost

我知道我可以在 class.phpmailer.php 文件中更改它,但我希望能够在上面的代码中设置它

这可能吗?

4

8 回答 8

13

好的,简而言之:

$email->From = "email.address@gmail.com";
$email->FromName = "Support Team";

这对我有用。

于 2014-04-07T15:01:56.477 回答
9

将整个东西包裹在try catch中。并在启用异常的情况下初始化 phpmailer

$email = new PHPMailer(true);

看起来使用了默认值。所以调用时出了点问题setFrom()。它默默地失败了,因为它在false没有启用异常的情况下返回。

try {
  // your mail code here
} catch (phpmailerException $e) {
  echo $e->getMessage();
}

并将电子邮件的设置和名称更改为:

$email->setFrom($result["emailfrom"], $result["emailfrom"]);

FromName是属性而不是方法。

于 2013-10-17T21:36:17.447 回答
3

class.phpmailer.php 文件包含“var $FromName = 'Root User';” 可以从“根用户”更改为“所需名称”的部分并完成您的工作。

于 2019-04-04T19:21:46.660 回答
1

当您收到 1.电子邮件和 2.名称时,在您的表单中应该如下所示

  1. <input type="text" name="emailfrom">

  2. <input type="text" name="namefrom">

在您的 php 代码中,它应该如下所示。

$mail->setFrom($_POST['emailfrom'],$_POST['namefrom']);

当我在 infinityhost 上使用这些设置时,我遇到了同样的问题,希望这会有所帮助。

$mail->Port = 587; // Which port to use, 587 is the default port for TLS security.
$mail->SMTPSecure = 'tls'; // Which security method to use. TLS is most secure.```

于 2019-07-24T09:41:00.830 回答
0

当我只将第一个参数发送到 时,我遇到了这个setFrom()问题name <email>

setFrom()不知道如何解析该结构。

更改为两个单独的参数解决了这个问题。

于 2016-03-24T16:12:29.197 回答
0

采用:

$mail->setFrom('here email add of sender','here name of the sender');

第一个参数是电子邮件地址,如果它为空或不是有效的电子邮件地址,它将在使用 php mailer 发送邮件时显示为 ROOT 用户

于 2018-07-03T05:01:48.860 回答
0

对于 PHPMailer 版本:5.1

这对我有用:

    $mail->SetFrom('no-reply@example.com', 'Name From');

希望它有效。

于 2020-06-18T09:43:47.273 回答
0

编辑您的 phpmailer.php,更改:

if($mail->Send()){

到:

if (mail($_POST["email"], 
         $_POST["subject"],
         $_POST["message"],
         $_POST["sender"])) {
  echo'Email Sended';
}
         *HTML* 
<form action="phpmailer.php" method="POST">
    <input type="hidden" name="sender" value="From: Support Team<Support@email.com>"/>
</form>

if ($mail->Send()) {设置为 Auto root,如果您发送电子邮件并且未同时声明 From。

于 2022-01-29T15:04:32.707 回答