Class: RCrewAI::Tools::EmailSender

Inherits:
Base
  • Object
show all
Defined in:
lib/rcrewai/tools/email_sender.rb

Constant Summary

Constants included from RCrewAI::ToolSchema

RCrewAI::ToolSchema::TYPE_MAP

Instance Method Summary collapse

Methods inherited from Base

available_tools, create_tool, #description, #execute_with_validation, #json_schema, list_available_tools, #name, #validate_params!

Methods included from RCrewAI::ToolSchema

#description, extended, #json_schema, #param, #params, #tool_name

Constructor Details

#initialize(**options) ⇒ EmailSender

Returns a new instance of EmailSender.



22
23
24
25
26
27
28
29
30
31
32
# File 'lib/rcrewai/tools/email_sender.rb', line 22

def initialize(**options)
  super()
  @smtp_server = options[:smtp_server] || 'localhost'
  @smtp_port = options[:smtp_port] || 587
  @username = options[:username]
  @password = options[:password]
  @from_address = options[:from_address] || @username
  @use_tls = options.fetch(:use_tls, true)
  @max_recipients = options.fetch(:max_recipients, 10)
  setup_mail_configuration
end

Instance Method Details

#execute(**params) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/rcrewai/tools/email_sender.rb', line 34

def execute(**params)
  validate_params!(
    params,
    required: %i[to subject body],
    optional: %i[cc bcc reply_to attachments]
  )

  to_addresses = normalize_email_addresses(params[:to])
  cc_addresses = normalize_email_addresses(params[:cc]) if params[:cc]
  bcc_addresses = normalize_email_addresses(params[:bcc]) if params[:bcc]

  begin
    validate_email_params!(to_addresses, cc_addresses, bcc_addresses, params)
    result = send_email(to_addresses, cc_addresses, bcc_addresses, params)
    format_email_result(result, to_addresses)
  rescue StandardError => e
    "Email sending failed: #{e.message}"
  end
end