如何通过电子邮件直接发送夏季笔记内容

Posted

技术标签:

【中文标题】如何通过电子邮件直接发送夏季笔记内容【英文标题】:How to send Summer note content directly via email 【发布时间】:2020-03-04 21:37:55 【问题描述】:

我需要发送一封带有夏季笔记内容的邮件,我正在使用 Code Igniter loadview 方法来渲染我的邮件正文,但显示图像的文本内容不是

一旦我遇到“传输已关闭,剩余字节数要读取”的问题,我已经使用此链接修复了此问题

https://justrocketscience.com/post/php_guzzle_bug/

newsletterMail.php

<html>
<head>Mailer</head>
<?php echo $body; ?>
</html>



$view= $this->CI->load>view('admin_user/newsletterMail',$pageData,TRUE);    

$headers=array(
            'Authorization: Bearer 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',
            'Content-Type: application/json'
        );

        $data=[
            "personalizations"=>[
                [
                    "to"=>$mailData['to']
                ]
            ],
            "from"=>[
                "email"=>"test@gmail.com"
            ],
            "subject"=>$subject,
            "content"=>[
                [
                    "type"=>"text/html",
                    "value"=>$body
                ]
            ]
        ];

$ch = curl_init();
        curl_setopt($ch,CURLOPT_URL,"https://api.sendgrid.com/v3/mail/send");
        curl_setopt($ch,CURLOPT_POST,1);
        curl_setopt($ch,CURLOPT_POSTFIELDS,json_encode($data));
        curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);
        curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
        curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
        curl_setopt($ch,CURLOPT_TCP_KEEPALIVE, 10);
        curl_setopt($ch,CURLOPT_TCP_KEEPIDLE, 10);
        $response= curl_exec($ch);
        $err = curl_error($ch);
        curl_close($ch);

我需要在邮件中显示我在夏季笔记中创建的内容

有什么办法吗?

【问题讨论】:

尝试阅读CI Email Class。 【参考方案1】:

除了使用 curl,您还可以使用 codeigniter 的默认电子邮件功能发送邮件,也可以使用 SMTP 协议发送邮件。检查以下代码以发送邮件。

function setProtocol()
   $CI = &get_instance();

   $CI->load->library('email');

   $config = Array(
      'protocol' => 'smtp',
      'smtp_host' => 'smtp.googlemail.com',
      'smtp_port' => 465, //(Port: 465 (SSL required) or 587 (TLS required))
      'smtp_user' => '**************', //(your Gmail account (e.g. admin@gmail.com))
      'smtp_pass' => '**************', //(your Gmail password)
      'mailtype' => "html",
      'charset' => 'iso-8859-1',
      'wordwrap' => TRUE,
      'newline' => '\r\n',
    );

    $CI->email->initialize($config);

    return $CI;
 

function newsletter()
  $CI = setProtocol();        

  $CI->email->from('admin@gmail.com');
  $CI->email->subject("Enter your subject");
  $CI->email->message($CI->load->view('admin_user/newsletterMail', $pageData, TRUE));
  $CI->email->to('user@gmail.com');
  $status = $CI->email->send();

  return $status;

您也可以在全球范围内使用setProtocol() 发送其他电子邮件。

【讨论】:

我需要一次向批量用户发送邮件,使用 smtp 页面会加载太多 这是供管理员使用的吗?

以上是关于如何通过电子邮件直接发送夏季笔记内容的主要内容,如果未能解决你的问题,请参考以下文章

通过 smtplib 发送电子邮件时如何在电子邮件内容中添加 href 链接

如何使用 IMAP 发送邮件?

需要能够通过电子邮件发送文档或 UIView 的内容

如何使用联系表格 7 在邮件正文中发送 HTML 内容?

如何通过电子邮件发送 dataURL 图片

如何每天定时发送邮件