Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
修改Javascript/PHP sendEmail函数以使用Mailgun HTTP POST_Php_Javascript_Curl_Postfix Mta_Mailgun - Fatal编程技术网

修改Javascript/PHP sendEmail函数以使用Mailgun HTTP POST

修改Javascript/PHP sendEmail函数以使用Mailgun HTTP POST,php,javascript,curl,postfix-mta,mailgun,Php,Javascript,Curl,Postfix Mta,Mailgun,我有一个sendEmail函数,作为我在线获得的更大php脚本的一部分,我需要修改它以使用我的新Mailgun帐户。我对PHP相当陌生,甚至对邮件服务器之类的东西也比较新,所以这在上周是一个挑战。Mailgun文档提供了一个示例(单击顶部的PHP按钮): 我知道我不想在我的函数中指定to、subject、text等,因为它是从其他现有区域绘制的,所以我尝试在函数的某个点添加类似的内容(抱歉,我不知道它是如何组合在一起的,因为它太乱了,以至于我重新开始: curl_setopt($ch, CURL

我有一个sendEmail函数,作为我在线获得的更大php脚本的一部分,我需要修改它以使用我的新Mailgun帐户。我对PHP相当陌生,甚至对邮件服务器之类的东西也比较新,所以这在上周是一个挑战。Mailgun文档提供了一个示例(单击顶部的PHP按钮):

我知道我不想在我的函数中指定to、subject、text等,因为它是从其他现有区域绘制的,所以我尝试在函数的某个点添加类似的内容(抱歉,我不知道它是如何组合在一起的,因为它太乱了,以至于我重新开始:

curl_setopt($ch, CURLOPT_POSTFIELDS, array('from' => 'Webmaster <webmaster@mydomain.com>',
                                             'to' => $to,
                                             'subject' => $subj,
                                             'text' => $msg));
curl\u setopt($ch,CURLOPT\u POSTFIELDS,array('from'=>'Webmaster',),
'至'=>$至,
“主题”=>$subc,
'text'=>$msg));
我还在sendEmail函数中添加了
$ch=curl_init();
,以及所有
curl_setopt
行。除此之外,我丢失了,正如您可能猜到的,什么也没发生

有人能告诉我如何将两者结合起来,为什么,或者给我指出一个与这类事情非常相似的地方吗


提前感谢您的帮助!

根据我对您的问题的理解,您已经将底部代码作为您正在使用的脚本的一部分,但是实际的邮寄需要按照顶部给出的示例邮枪代码进行

我已将这两个函数混合在一起。它未经测试。。可能有错误

该函数具有相同的名称,调用方式与以前完全相同,接受相同的参数。您将看到,我已删除了代码的底部部分(实际上发送了电子邮件),并将其替换为示例代码。其中,我已将其提供的占位符文本替换为函数在接收时的值顶部:
$to
$subj
$msg
。我还删除了所有
$headers
行,因为它们专门指的是
mail()
函数,我们不再使用该函数。[编辑:现在也应该使用bcc选项。]

您仍然需要更改一些内容:
此处的my api密钥
兴奋用户
。这些信息应该可以从您的Mailgun帐户获得

public function sendEmail($to, $subj, $msg, $shortcodes = '', $bcc = false) {

  if ( !empty($shortcodes) && is_array($shortcodes) ) :

      foreach ($shortcodes as $code => $value)
          $msg = str_replace('{{'.$code.'}}', $value, $msg);

  endif;    

  /* Multiple recepients? */
  if ( is_array( $to ) )
      $to = implode(', ', $to);

  /* BCC address. */
  $bccrecip = '';
  if ( $bcc ) {
      $bccrecip = $to;
      $to = '';
  }

  $ch = curl_init();

  curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
  curl_setopt($ch, CURLOPT_USERPWD, 'api:my-api-key-here');
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

  curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
  curl_setopt($ch, CURLOPT_URL, 'https://api.mailgun.net/v2');
  curl_setopt($ch, CURLOPT_POSTFIELDS, array('from' => 'Excited User <me@samples.mailgun.org>',
                                             'to' => $to,
                                             'bcc' => $bccrecip,
                                             'subject' => $subj,
                                             'text' => $msg));

  $result = curl_exec($ch);
  curl_close($ch);

  return $result;

}
公共函数sendmail($to、$subj、$msg、$shortcodes='',$bcc=false){
如果(!empty($shortcode)&&is_数组($shortcode)):
foreach($code=>$value的短代码)
$msg=str_replace('{{.$code'}}}',$value,$msg);
endif;
/*多个最近者*/
if(is_数组($to))
$to=内爆(',',$to);
/*密件抄送地址*/
$bccrecip='';
若有(密件抄送){
$bccrecip=$to;
$to='';
}
$ch=curl_init();
curl_setopt($ch,CURLOPT_HTTPAUTH,CURLAUTH_BASIC);
curl_setopt($ch,CURLOPT_USERPWD,'api:my-api-key here');
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_CUSTOMREQUEST,'POST');
curl_setopt($ch,CURLOPT_URL,'https://api.mailgun.net/v2');
curl_setopt($ch,CURLOPT_POSTFIELDS,array('from'=>'兴奋用户'),
'至'=>$至,
“密件抄送”=>$bccrecip,
“主题”=>$subc,
'text'=>$msg));
$result=curl\u exec($ch);
卷曲关闭($ch);
返回$result;
}

什么东西完全不起作用?如果打开错误报告,它会输出任何错误吗?谢谢@Andy Allcorn!这真的帮助我看到了前284739次出错的地方,并且我能够让它起作用。
curl_setopt($ch, CURLOPT_POSTFIELDS, array('from' => 'Webmaster <webmaster@mydomain.com>',
                                             'to' => $to,
                                             'subject' => $subj,
                                             'text' => $msg));
public function sendEmail($to, $subj, $msg, $shortcodes = '', $bcc = false) {

  if ( !empty($shortcodes) && is_array($shortcodes) ) :

      foreach ($shortcodes as $code => $value)
          $msg = str_replace('{{'.$code.'}}', $value, $msg);

  endif;    

  /* Multiple recepients? */
  if ( is_array( $to ) )
      $to = implode(', ', $to);

  /* BCC address. */
  $bccrecip = '';
  if ( $bcc ) {
      $bccrecip = $to;
      $to = '';
  }

  $ch = curl_init();

  curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
  curl_setopt($ch, CURLOPT_USERPWD, 'api:my-api-key-here');
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

  curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
  curl_setopt($ch, CURLOPT_URL, 'https://api.mailgun.net/v2');
  curl_setopt($ch, CURLOPT_POSTFIELDS, array('from' => 'Excited User <me@samples.mailgun.org>',
                                             'to' => $to,
                                             'bcc' => $bccrecip,
                                             'subject' => $subj,
                                             'text' => $msg));

  $result = curl_exec($ch);
  curl_close($ch);

  return $result;

}