Когда я отправляю письмо через скрытую копию с помощью MailApp, оно отправляет, получает, и электронное письмо отображается в папке отправителя. Однако электронное письмо в папке отправленных не показывает отправителя, которого они хотели бы скрыть. Он отображается как электронное письмо, которое было отправлено ОТПРАВИТЕЛЮ (даже если отправитель не отправлял его себе).

Кроме того, похоже, что он отправляет электронное письмо почти как mailmerge. Он попадает в почтовый ящик получателей скрытой копии, показывая их как единственного получателя (а не как получателей скрытой копии).

Это серьезная проблема, потому что вы не можете подтвердить, что отправили письмо более чем 20 людям.

Об этом уже спрашивали здесь без ответов.

function sendEmail(form) {
  
  var ss = SpreadsheetApp.getActive();
  var body = form.body;
  var bcc = form.bccfield;
  var cc = form.ccfield;
  var to = form.tofield;
  var subject = form.subject;
   var eHandle = ss.getSheetByName("Email Handling");
  var sig = eHandle.getRange(10, 2).getValue();
  var img = eHandle.getRange(11, 2).getValue();    
  var sigImage = '<img src ="' + img + '" >';
  
MailApp.sendEmail(to, {
    to: to,
  cc: cc,
  bcc: bcc,
    subject: subject,
   
  htmlBody: body.replace(/\n/g, '<br>') + sig + sigImage});
  }
1
Luke 5 Окт 2020 в 04:03

2 ответа

Лучший ответ

Используйте GmailApp, у него есть аналогичный < a href = "https://developers.google.com/apps-script/reference/gmail/gmail-app#sendEmail(String,String,String,Object)" rel = "nofollow noreferrer"> sendEmail , который делает именно то, что вы хотите. Вы также правы относительно поведения метода MailApp - электронные письма отправляются так, как если бы они были отдельными электронными письмами 0 .

Чтобы увидеть разницу воочию, запустите следующий фрагмент:

function testBcc() {

    const email = Session.getEffectiveUser().getEmail();

    const emailConfig = {
        to: email,
        bcc: email,
        htmlBody: `<p>Test message</p>`,
        subject: "test subject"
    };

    MailApp.sendEmail(emailConfig);
    GmailApp.sendEmail(
        emailConfig.to, emailConfig.subject,
        "",
        { htmlBody: emailConfig.htmlBody, bcc : emailConfig.bcc });
}

Обратите внимание, что вам понадобятся следующие области:

https://www.googleapis.com/auth/userinfo.email на {{ X0}} https://www.googleapis.com/auth/script.send_mail на {{ X1}} через MailApp https://www.googleapis.com/auth/gmail.send на {{ X3}} через GmailApp


0 , обратите внимание, что подпись вашего метода действительно неверна, как упоминается в ответе Рубена.

4
Oleg Valter 5 Окт 2020 в 02:51

Ответ Олега правильный, MailApp.sendEmail(...) работает не так, как вы ожидали. В любом случае стоит упомянуть о проблеме, которая, согласно https: // разработчики .google.com / apps-script / reference / mail / mail-app есть четыре sendEmail метода для MailApp:

  • sendEmail(message)
  • sendEmail(recipient, subject, body)
  • sendEmail(recipient, subject, body, options)
  • sendEmail(to, replyTo, subject, body)

Но ваш код не использует их.

Заменить

MailApp.sendEmail(to, {
    to: to,
  cc: cc,
  bcc: bcc,
    subject: subject,
   
  htmlBody: body.replace(/\n/g, '<br>') + sig + sigImage});
  

От

MailApp.sendEmail({
  to: to,
  cc: cc,
  bcc: bcc,
  subject: subject, 
  htmlBody: body.replace(/\n/g, '<br>') + sig + sigImage
});
  
3
Rubén 6 Окт 2020 в 16:43