Pessoal boa tarde!
Estou com um problema, não consigo anexar um arquivo num formulário de envio utilizando o sendGrid. Já fiz todo os processo possíveis, mas não obtive nenhum resultado válido.
Fiz meu formulário e todos campos consigo pegar os valores deles, menos o do arquivo 'upado'.
Já fiz os arquivos no backend como pedem os artigos que li sobre o sendGrid.
Poderiam me ajudar.
Segue meu codigo:
import { sendEmail } from 'backend/email'; $w.onReady(function () { $w("#dataset1").onAfterSave(sendFormData); }); function sendFormData() { const subject = `New Submission from ${$w("#inputNome").value}`; const body = `Nome: ${$w("#inputNome").value} \rEmail: ${$w("#inputEmail").value} \rTEL: ${$w("#inputTel").value} \rCPF: ${$w("#inputCPF").value} \rGenero: ${$w("#radioGroupGenero").value} \rSport: ${$w("#dropdownAtuacao").value} \rNascimento: ${$w("#inputDataNascimento").value} \rExperiência: ${$w("#radioGroupExperiencia").value} \rCurriculo: ${$w('#uploadButton1').fileType} `; sendEmail(subject, body) .then(response => console.log(response)); }
Hello @Hugo Neves e @marcopecchy Uma observação é que para fazer o envio do documento você precisa salvar no banco de dados e adicionar o link ao corpo do seu email.
Aqui está um exemplo:
import {sendEmail, sendEmailWithRecipient} from 'backend/email'; $w.onReady(function () { $w("#dataset1").onAfterSave(sendFormData); }); // wix:document://v1 -> docs.wixstatic.com/ugd function sendFormData() { const convertRegex = new RegExp(/wix:document:\/\/v1\/([^\/]+)\/(.*)$/); const item = $w("#dataset1").getCurrentItem(); const matches = item.fieldName.match(convertRegex); const documentUrl = `docs.wixstatic.com/ugd/${matches[1]}?dn=${matches[2]}`; const subject = `New Submission by ${$w("#firstName").value}`; const body = `Name: ${$w("#firstName").value} \rEmail: ${$w("#emailInput").value} \rnome: ${$w("#firstName").value} \rSobrenome: ${$w("#lastName").value} \rArquivo: ${documentUrl}`; const recipient = "wix-user@gmail.com"; sendEmailWithRecipient(subject, body, recipient) .then(response => console.log(response)); }
@Hugo Neves, tentamos... Se eu encontrar mais alguma coisa te aviso por aqui, mas vai fuçando ai... Não é possível que o meu esteja em pleno funcionamento e o seu não! Abraço ! 👊
Olá @marcopecchy passei o pente fino nas configurações como me indicou.
A única configuração que achei diferente foi o do botão do upload.
Que estava configurado como apenas enviar os arquivos, conectado ao BD.
Coloquei a configuração passada por você, mas mesmo assim não obtive resultado..
Já testei no premium e no free.. e foram do mesmo jeito.
att;
@Hugo Neves, aparentemente seus códigos estão OK. Minha próxima sugestão é você revisar os elementos adicionados no formulário, o próprio formulário e verificar se eles estão configurados de acordo com as exigências do SendGrid. Só pra gente se certificar de que não ficou nada para trás, nas suas configurações do "Dataset", a primeira opção (Connect a Collection) obviamente deve estar conectada a sua respectiva coleção no Banco de Dados. O nome no conjunto dos dados é só um detalhe, mas é importante verificar para linear os elementos nele. E a opção (Mode) deve estar "Apenas escrever" (Read Only). Nada de filtro, nada de Classificar... Como você disse, o que não está funcionando é o botão (opção) de "Anexar Documentos", verifica se as configurações estão iguais as da figura abaixo, e se a opção "Connect a dataset" está "setada" com o seu respectivo Dataset:
Basicamente é isso, não sei se seu formulário está incluído num site com Plano Premium, porque o meu está e não tenho SendGrid's em planos grátis para testar a funcionalidade... Acabei de testar o meu neste momento e está funcionando perfeitamente. Se eu encontrar mais opções que possam comprometer o funcionamento te aviso, mas creio que agora fizemos "pente fino" nos detalhes. Manda notícias 😅✌️
@marcopecchy , bom dia!
Obrigado pela atenção e ajuda! Mas não obtive resultado!
Segue os prints com meu código.. eu já tinha realizado com o mesmo código e conseguia, mas agora..não vai de jeito nenhum.
Com relação ao APIKey, fiz solicitação de uma nova APIKey.. mas mesmo assim não foi.
//sendGrid.js
import {fetch} from 'wix-fetch'; export function sendWithService(key, sender, recipient, subject, body) { const url = "https://api.sendgrid.com/api/mail.send.json"; const headers = { "Authorization": "Bearer " + key, "Content-Type": "application/x-www-form-urlencoded" }; const data = `from=${sender}&to=${recipient}&subject=${subject}&text=${body}`; const request = { "method": "post", "headers": headers, "body": data }; return fetch(url, request) .then(response => response.json()); }
//email.jsw
import {sendWithService} from 'backend/sendGrid'; export function sendEmail(subject, body) { const key = "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"; const sender = "neveshug@gmail.com"; const recipient = "neveshug@gmail.com"; return sendWithService(key, sender, recipient, subject, body); } export function sendEmailWithRecipient(subject, body, recipient) { const key = "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"; const sender = "neveshug@gmail.com"; return sendWithService(key, sender, recipient, subject, body); }
//pageCode import { sendEmail, sendEamilWithRecipientEmail } from 'backend/email'; $w.onReady(function () { $w("#dataset1").onAfterSave(sendFormData); }); function sendFormData() { const subject = `New Submission from ${$w("#nome").value}`; const body = `O Contato -> ${$w("#email").value} <- Acabou de enviar uma solicitação. \rNome: ${$w("#nome").value} \rEmail: ${("#email").value} \rTel: ${$w("#telefone").value} \rCurriculo: ${$w("#uploadButton1").value} const recipient = $w("#Email").value; sendEmailWithRecipient(subject, body, recipient) .then(response => console.log(response)); sendEmail(subject, body) .then(response => console.log(response)); }
@marcopecchy obrigado pela ajuda!
Mas realmente não sei o que esta acontecendo, não consigo nem mais enviar nada por email usando o sendGrid.
Refiz minha apiKeys e nada!
Vou tentar utilizar outra forma para isso. E vê se consigo algum code para uppar arquivos.
Obrigado!
@Hugo Neves, não sei se percebeu mas eu não sou o cara certo pra indicar códigos aqui no Fórum, mas como eu também tenho um Formulário SendGrid no meu site, encontrei algumas diferenças comparando o meu código com o seu... Um ponto bem distinto que encontrei na linha de código do anexo foi o uso de ".fileType" em vez de: ".value" e o "sendEmailWithRecipient"... Cola esse código aí e vê se funciona:
import {sendEmail, sendEmailWithRecipient} from 'backend/email';
$w.onReady(function () {
$w("#dataset1").onAfterSave(sendFormData);
});
function sendFormData() {
const subject = `New Submission from ${$w("#inputNome").value}`;
const body = `O Contato -> ${$w("#eMail").value} <- Acabou de enviar uma solicitação.
\rNome: ${$w("#inputNome").value}
\rEmail: ${$w("#inputEmail").value}
\rTel: ${$w("#inputTel").value}
\rCPF: ${$w("#inputCPF").value}
\rGenero: ${$w("#radioGroupGenero").value}
\rSport: ${$w("#dropdownAtuacao").value}
\rNascimento: ${$w("#inputDataNascimento").value}
\rExperiência: ${$w("#radioGroupExperiencia").value}
\rCurriculo ${$w("#uploadButton1").value}
const recipient = $w("#Email").value;
sendEmailWithRecipient(subject, body, recipient)
.then(response => console.log(response));
sendEmail(subject, body)
.then(response => console.log(response));
}
Se "funfar", depois envia a URL pra gente ver ✌️