Skip to content

Sending Profiles

A "Sending Profile" is the SMTP configuration that tells Gophish how to send emails.

Sending profiles support authentication and ignoring invalid SSL certificates.

Sending Profiles have the following structure:

{
  id                 : int64
  name               : string
  username           : string (optional)
  password           : string (optional)
  host               : string
  interface_type     : string
  from_address       : string
  ignore_cert_errors : boolean (default:false)
  modified_date      : string(datetime)
  headers            : array({key: string, value: string}) (optional)
}

Get Sending Profiles

GET /api/smtp/

Gets a list of the sending profiles created by the authenticated user.

Headers

Name Required Description
Authorization (string) Yes A valid API key

Response 200

A list of the sending profiles created by the authenticated user.

[
  {
    "id" : 1,
    "name":"Example Profile",
    "interface_type":"SMTP",
    "from_address":"John Doe <john@example.com>",
    "host":"smtp.example.com:25",
    "username":"",
    "password":"",
    "ignore_cert_errors":true,
    "modified_date": "2016-11-20T14:47:51.4131367-06:00",
    "headers": [
      {
        "key": "X-Header",
        "value": "Foo Bar"
      }
    ]
  }
]

Get Sending Profile

GET /api/smtp/:id

Returns a sending profile given an ID, returning a 404 error if no sending profile with the provided ID is found.

Path Parameters

Name Required Description
id (integer) Yes The sending profile ID to return

Headers

Name Required Description
Authorization (string) Yes A valid API key

Response 200

{
  "id" : 1,
  "name":"Example Profile",
  "interface_type":"SMTP",
  "from_address":"John Doe <john@example.com>",
  "host":"smtp.example.com:25",
  "username":"",
  "password":"",
  "ignore_cert_errors":true,
  "modified_date": "2016-11-20T14:47:51.4131367-06:00",
  "headers": [
    {
      "key": "X-Header",
      "value": "Foo Bar"
    }
  ]
}

Response 404

{
  "message": "SMTP not found",
  "success": false,
  "data": null
}

Create Sending Profile

POST /api/smtp

Creates a sending profile.

Headers

Name Required Description
Authorization (string) Yes A valid API key

Body Parameters

Name Required Description
Payload (object) Yes The body of the request is a JSON representation of a sending profile. Refer to the introduction for the valid format of a sending profile.

Response 201

{
  "id" : 1,
  "name":"Example Profile",
  "interface_type":"SMTP",
  "from_address":"John Doe <john@example.com>",
  "host":"smtp.example.com:25",
  "username":"",
  "password":"",
  "ignore_cert_errors":true,
  "modified_date": "2016-11-20T14:47:51.4131367-06:00",
  "headers": [
    {
      "key": "X-Header",
      "value": "Foo Bar"
    }
  ]
}

Response 400

If required fields aren't provided, or if a sending profile already exists with the provided name, a 400: Bad Request error will be returned.

{
  "message": "Error message indicating the issue",
  "success": false,
  "data": null
}

This method expects the sending profile to be provided in JSON format. You must provide a sending profile name, the from_address which emails are sent from, and the SMTP relay host.

Sending Profiles support authentication by setting the username and password.

Additionally, many SMTP server deployments leverage self-signed certificates. To tell Gophish to ignore these invalid certificates, set the ignore_cert_errors field to true.

This method returns the JSON representation of the sending profile that was created.

Modify Sending Profile

PUT /api/smtp/:id

Modifies an existing sending profile.

Path Parameters

Name Required Description
id (integer) Yes The sending profile ID to modify

Headers

Name Required Description
Authorization (string) Yes A valid API key

Body Parameters

Name Required Description
Payload (object) Yes The body of the request is a JSON representation of a sending profile. Refer to the introduction for the valid format of a sending profile.

Response 200

{
  "id" : 1,
  "name":"Example Profile",
  "interface_type":"SMTP",
  "from_address":"John Doe <john@example.com>",
  "host":"smtp.example.com:25",
  "username":"",
  "password":"",
  "ignore_cert_errors":true,
  "modified_date": "2016-11-20T14:47:51.4131367-06:00",
  "headers": [
    {
      "key": "X-Header",
      "value": "Foo Bar"
    }
  ]
}

Response 404

If no sending profile exists with the provided ID, a 404: Not Found error is returned.

{
  "message": "SMTP not found",
  "success": false,
  "data": null
}

This method expects the sending profile to be provided in JSON format. You must provide a full sending profile, not just the fields you want to update.

This method returns the JSON representation of the sending profile that was modified.

Delete Sending Profile

DELETE /api/smtp/:id

Deletes a sending profile by ID.

Path Parameters

Name Required Description
id (integer) Yes The ID of the sending profile to delete

Headers

Name Required Description
Authorization (string) Yes A valid API key

Response 200

{
  "message": "SMTP deleted successfully!",
  "success": true,
  "data": null
}

Response 404

{
  "message": "SMTP not found",
  "success": false,
  "data": null
}

Returns a 404 error if the specified sending profile isn't found.

This method returns a status message indicating the sending profile was deleted successfully.