drtkyykai004574380 2018-02-19 03:48
浏览 210
已采纳

如何使用PHP通过ZOHO api发送电子邮件?

I've followed this doc and here is my code:

$url = "https://mail.zoho.com/api/accounts/662704xxx/messages";
$param = [  "fromAddress"=> "myemail@mydomain.com",
            "toAddress"=> "somewhere@gmail.com",
            "ccAddress"=> "",
            "bccAddress"=> "",
            "subject"=> "Email - Always and Forever",
            "content"=> "Email can never be dead ..."];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($param));
$result = curl_exec($ch);
curl_close($ch);
print_r($result);
die;

And the response is:

{"data":{"errorCode":"INVALID_TICKET","moreInfo":"Invalid ticket"},"status":{"code":400,"description":"Invalid Input"}}

And the response means: (according to this)

BAD REQUEST - The input passed in the Request API is invalid or incorrect. The requestor has to change the input parameters and send the Request again.

Any idea how can I fix it?

  • 写回答

1条回答 默认 最新

  • douluyezhen4512 2018-02-19 05:21
    关注

    In order to send mail with Zoho through its API, you need to first authenticate, as seen on the APIDocs:

    Note: You can use the API here to retrieve the accountid for the currently authenitcated user.

    That said, and refering to your comment, you don't need an SMTP server installed on your server to be able to send mail with PHPMailer:

    Integrated SMTP support - send without a local mail server

    Source

    Zoho requires you to use TLS and the 587 port, so you can set up your connection like this:

    <?php
    use PHPMailer\PHPMailer\PHPMailer;
    
    $phpMailer = new PHPMailer(true);
    $phpMailer->isSMTP();
    $phpMailer->Host = "smtp.zoho.com";
    $phpMailer->SMTPAuth = true;
    $phpMailer->Username = "your-user";
    $phpMailer->Password = "your-password";
    $phpMailer->SMTPSecure = "tls";
    $phpMailer->Port = 587;
    $phpMailer->isHTML(true);
    $phpMailer->CharSet = "UTF-8";
    $phpMailer->setFrom("mail-user", "mail-name");
    
    $phpMailer->addAddress("mail-to");
    $phpMailer->Subject = "subject";
    $phpMailer->Body = "mail-body";
    $phpMailer->send();
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

悬赏问题

  • ¥15 在更新角色衣服索引后,Sprite 并未正确显示更新的效果该如何去解决orz(标签-c#)
  • ¥15 VAE代码如何画混淆矩阵
  • ¥15 求遗传算法GAMS代码
  • ¥15 雄安新区高光谱数据集的下载网址打不开
  • ¥66 android运行时native和graphics内存详细信息获取
  • ¥100 求一个c#通过CH341读取数据的Demo,能够读取指定地址值的功能
  • ¥15 rk3566 Android11 USB摄像头 微信
  • ¥15 torch框架下的强化学习DQN训练奖励值浮动过低,希望指导如何调整
  • ¥35 西门子博图v16安装密钥提示CryptAcquireContext MS_DEF_PROV Error of containger opening
  • ¥15 mes系统扫码追溯功能
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部