Object
A very stupid SMTP participant.
:server - the IP address or hostname of the SMTP server/gateway (defaults to '127.0.0.1')
:port - the port of the SMTP server/gateway (defaults to 25)
:from - the from mail address (mandatory)
:to - the to mail address
:template - a String template for the mail message
:notification - when set to true, the flow will resume immediately after having sent the email
@engine.register_participant(
:no_good_notification,
Ruote::SmtpParticipant,
:server => 'smtp.example.com'
:port => 25,
:to => 'toto@example.com',
:from => 'john@example.com',
:notification => true,
:template => "Subject: ${f:email_subject}\n\nno good.")
Process variable / workitem field substitution works the same as in process definitions (in this example, the workitem field email_subject will be used as the subject of the email...)
The target of the email is either given via the workitem field 'email_target', either by the option :to. The workitem field takes precedence if both are present.
This parameter/option may be either a single (string) email address, either an array of (string) email addresses.
This participant cannot read POP/IMAP accounts for you. You have to use a mail listener or get a web reply by placing a link in the message...
# File lib/ruote/part/smtp_participant.rb, line 108 def cancel (fei, flavour) # does nothing # # one variant could send a "cancellation email" end
# File lib/ruote/part/smtp_participant.rb, line 88 def consume (workitem) to = workitem.fields['email_target'] || @opts['to'] to = Array(to) text = render_template( @opts['template'], Ruote::Exp::FlowExpression.fetch(@context, workitem.fei.to_h), workitem) server = @opts['server'] || '127.0.0.1' port = @opts['port'] || 25 Net::SMTP.start(server, port) do |smtp| smtp.send_message(text, @opts['from'] || 'ruote@example.org', *to) end reply_to_engine(workitem) if @opts['notification'] end
Generated with the Darkfish Rdoc Generator 2.