É possível enviar e-mail do Google por URL?

Sep 09 2020

Não consegui encontrar nenhuma forma documentada de enviar e-mail através da API GMAIL, usando url (solicitação GET), algo assim:

https://example_api/?action=send&[email protected]&message=hello&[email protected]&pass=xyz-app-pass

alguma ideia ou truque para conseguir isso? (então, eu poderia usar uma senha simples ou de app).

Respostas

2 Tanaike Sep 10 2020 at 00:43

Eu acredito em seu objetivo da seguinte maneira.

  • Você deseja enviar um e-mail acessando a URL, como se estivesse https://example_api/?action=send&[email protected]&message=hello&[email protected]&pass=xyz-app-passusando a API do Gmail.

Achei que seu objetivo poderia ser alcançado usando Web Apps criados pelo Google Apps Script. Nesse caso, o script pode ser simples. Portanto, nesta resposta, gostaria de propor atingir seu objetivo usando Web Apps criados pelo Google Apps Script.

Uso:

Faça o seguinte fluxo.

1. Crie um novo projeto do Google Apps Script.

O script de amostra do Web Apps é um Script do Google Apps. Portanto, crie um projeto do Google Apps Script.

Se você deseja criá-lo diretamente, acesse a https://script.new/. Nesse caso, se você não estiver conectado ao Google, a tela de login será aberta. Portanto, faça login no Google. Com isso, o editor de script do Google Apps Script é aberto.

2. Prepare o script.

Copie e cole o seguinte script (Google Apps Script) no editor de scripts. Este script é para os aplicativos da Web.

function doGet(e) {
  const allowedUsers = [
    {email: "[email protected]", password: "xyz-app-pass"},
    ,
    ,
    ,
  ];  // If you want to allow other users to use this script, please add other emails and passwords to the `allowedUsers` array;
  const subject = "sample subject";

  const {action, to, message, auth_user, pass} = e.parameter;
  if (action == "send" && allowedUsers.some(({email, password}) => email == auth_user && password == pass)) {
    MailApp.sendEmail({to: to, subject: subject, body: message});
    return HtmlService.createHtmlOutput("Email was sent.");
  }
  return HtmlService.createHtmlOutput("Email was not sent.");
}

3. Implantar aplicativos da Web.

  1. No editor de script, abra uma caixa de diálogo por "Publicar" -> "Implementar como aplicativo da web".
  2. Selecione "Usuário acessando o aplicativo da web" para "Executar o aplicativo como:" .
    • Com isso, o script é executado como o usuário que acessou os Web Apps.
  3. Selecione "Qualquer pessoa" para "Quem tem acesso ao aplicativo:" .
  • Nesse caso, acesse os aplicativos da Web usando o navegador. Com isso, ao fazer login no Google, os Web Apps podem ser utilizados.
  • E, nessas configurações, quando o "Usuário A" acessa os Web Apps fazendo login no Google, o "Usuário A" também pode enviar o e-mail usando o próprio Gmail. Nesse caso, adicione {email: "###", password: "###"}"Usuário A" ao allowedUsersscript. Por isso, apenas usuários cadastrados podem enviar o e-mail.
  • Se você não quiser compartilhar com outros usuários, defina Execute the app as: Mee Who has access to the app: Only myself.
  1. Clique no botão "Implementar" como uma nova "Versão do projeto".
  2. Abra automaticamente uma caixa de diálogo de "Autorização necessária".
    1. Clique em "Permissões de revisão".
    2. Selecione sua própria conta.
    3. Clique em "Avançado" em "Este aplicativo não foi verificado".
    4. Clique em "Ir para ### nome do projeto ### (inseguro)"
    5. Clique no botão "Permitir".
  3. Clique OK".
  4. Copie o URL dos aplicativos da Web. É como https://script.google.com/macros/s/###/exec.
    • Quando você modificou o Google Apps Script, reimplante como nova versão. Com isso, o script modificado é refletido para Web Apps. Por favor, tome cuidado com isso.

4. Teste de aplicativos da Web.

Acesse a URL de seus aplicativos da Web usando seu navegador, incluindo os parâmetros de consulta a seguir. Quando você já estiver logado no Google, o script do Web Apps é executado.

https://script.google.com/macros/s/###/exec?action=send&[email protected]&message=hello&[email protected]&pass=xyz-app-pass
Resultado:

Quando script acima é executado e auth_usere passestão incluídos no allowedUsers, Email was sent.é devolvido.

Nota:

  • Quando você modificou o script de Web Apps, reimplante os Web Apps como uma nova versão. Com isso, o script mais recente é refletido nos Web Apps. Por favor, tome cuidado com isso.
  • Se você deseja acessar os aplicativos da Web usando um script e curl, é necessário acessá-los usando o token de acesso. Neste caso, inclua o escopo de https://www.googleapis.com/auth/drive.file(em alguns casos, pode funcionar /driveou /drive.readonly)
  • O Script do Google Apps é um script de exemplo simples para explicar o método para atingir seu objetivo. Portanto, modifique-o para sua situação real.

Referências:

  • Aplicativos da web
  • Aproveitando o Web Apps com o Google Apps Script