Criei um módulo de formulário de contato de acordo com esta documentação: https://apostrophecms.org/docs/tutorials/intermediate/forms.html
O trabalho de envio e os formulários enviados são exibidos no item de menu do administrador "Formulários de contato".
Também quero gerar um e-mail para um endereço de e-mail de destinatário para cada envio. apóstrofo-peças-enviar-widgets afirma que eu possooverride the beforeInsert method to send email, if desired.
No entanto, não tenho certeza de onde devo substituir esse método.
Devo adicionar um beforeInsert
método dentro do método /lib/modules/contact-form/index.js self.submit
?
Ou devo criar uma cópia de nível de projeto de apóstrofo-peças-enviar-widgets e substituir o beforeInsert
método lá (acho que isso é provavelmente muito global e, portanto, não ideal)?
Por último, devo envolver apóstrofo-email ?
Minha resposta aqui assume que você está de fato usando apostrophe-pieces-submit-widgets
. Então você não teve que escrever muito código até agora. Você já tem um módulo de peças, vamos chamá-lo products
, e fez um módulo de envio de widgets,, products-submit-widgets
que estende apostrophe-pieces-submit-widgets
. OK ótimo. Vamos falar sobre como fazer o resto do caminho para enviar e-mail.
O beforeInsert
método intencionalmente começa sem fazer nada, pois é sua oportunidade de fazer "algo extra" no código de nível de projeto.
Para substituir esse método, crie lib/modules/products-submit-widgets/index.js
se ainda não tiver feito isso. Você provavelmente já tem esse arquivo com addFields
e extend
etc. de acordo com a documentação de apostrophe-pieces-submit-widgets
.
Agora seu código pode ter a seguinte aparência:
module.exports = {
// ALL OF YOUR EXISTING CONFIGURATION OF THE products-submit-widgets
// MODULE STILL GOES HERE, then...
construct: function(self, options) {
self.beforeInsert = function(req, piece, callback) {
return self.email(req, 'emailSubmission', {
piece: piece
}, {
// can also specify from and other
// valid properties for nodemailer messages here
to: '[email protected]',
subject: 'A new submission was received'
}, callback);
};
}
}
Agora, lib/modules/my-pieces-module-name-submit-widgets/views
em nível de projeto , criar um emailSubmission.html
arquivo e preenchê-lo assim:
<h4>A new submission was received</h4>
A new submission was received from {{ piece.someFieldOrOther }}.
It contains this information:
{{ piece.someOtherField }}
{{ piece.yetAnotherField }}
{{ piece.etc }}
Por enquanto, tudo bem! Mas, para que o self.email
método funcione, você precisa configurar o apostrophe-email
módulo. Uma configuração básica pode ser parecida com esta, se você já tiver um agente de entrega de e-mail em seu servidor Linux:
// in app.js
modules: {
'apostrophe-email': {
// Default "from" address. Note your email can be dropped as spam
// if this address is invalid or your server has no right to send
// email for it
from: '"Jane Doe" <[email protected]>',
// See the nodemailer documentation, many
// different transports are available, this one
// matches how PHP does it on Linux servers
nodemailer: {
sendmail: true,
newline: 'unix',
path: '/usr/sbin/sendmail'
}
}
}
Mas, para informações mais completas sobre isso, consulte o envio de e-mail do seu projeto Apostrophe . Se você usar uma configuração ingênua, seus e-mails podem ser descartados como spam. Se você não planeja usar um serviço como Amazon Simple Email Service ou Postmark, e seu volume está baixo, você pode configurar o nodemailer para enviar mensagens através de uma conta do gmail válida sem muito trabalho.
Espero que isso seja útil! Seria um ótimo PR adicionar isso como um recurso embutido opcional do módulo de widgets de envio de peças de apóstrofo.
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras