# man > Mail::Message::TransferEnc

---
type: CommandReference
command: Mail::Message::TransferEnc
mode: perldoc
section: 3pm
source: perldoc
---

## Quick Reference

- `$msg->decoded` — decode message body using its Content-Transfer-Encoding
- `$msg->encode(transfer => 'base64')` — encode message body with specified transfer encoding
- `Mail::Message::TransferEnc->addTransferEncoder($type, $class)` — register a new encoder type
- `$obj->create($type, %options)` — instantiate an encoder/decoder for given type
- `$obj->name()` — return the encoder name (case-insensitive)
- `$obj->check($body, %options)` — verify body is correctly encoded; returns body with 'checked' flag or new body
- `$obj->decode($body, %options)` — decode body content; returns new body
- `$obj->encode($body, %options)` — encode body content; returns new body

## Name

Mail::Message::TransferEnc - message transfer encoder/decoder

## Synopsis

perl
my $msg = ...;
my $decoded = $msg->decoded;
my $encoded = $msg->encode(transfer => 'base64');
## Description

Base class for encoders/decoders used during message transport. Invoked via `Mail::Message::decoded()` and `Mail::Message::encode()`. Available coders:

- `Mail::Message::TransferEnc::Base64` — "base64" for binary data
- `Mail::Message::TransferEnc::SevenBit` — "7bit" for plain ASCII
- `Mail::Message::TransferEnc::EightBit` — "8bit" for extended character set (not encoded)
- `Mail::Message::TransferEnc::QuotedPrint` — "quoted-printable" for extended character set

Extends `Mail::Reporter`.

## Inheritance

Mail::Message::TransferEnc
  is a Mail::Reporter
Extended by:
- `Mail::Message::TransferEnc::Base64`
- `Mail::Message::TransferEnc::Binary`
- `Mail::Message::TransferEnc::EightBit`
- `Mail::Message::TransferEnc::QuotedPrint`
- `Mail::Message::TransferEnc::SevenBit`

## Methods

### Constructors

- `$obj->new(%options)` — Inherited from `Mail::Reporter`.

### The Encoder

- `Mail::Message::TransferEnc->addTransferEncoder($type, $class)` — Register a new encoder type (used in Content-Transfer-Encoding header).
- `$obj->create($type, %options)` — Create a coder/decoder for the given type.
- `$obj->name()` — Return encoder name (case-insensitive).

### Encoding

Common options for `check`, `decode`, `encode`:

- `result_type => CLASS` — The body class to produce when modified data is returned.

- `$obj->check($body, %options)` — Check if body is correctly encoded. Returns same body with 'checked' flag set, or a new body if not.
- `$obj->decode($body, %options)` — Decode body content; returns new body.
- `$obj->encode($body, %options)` — Encode body content; returns new body.

### Error Handling

Inherited from `Mail::Reporter`:

- `$obj->AUTOLOAD()`
- `$obj->addReport($object)`
- `$obj->defaultTrace([$level])` (class and instance)
- `$obj->errors()`
- `$obj->log([$level, [$strings]])` (class and instance)
- `$obj->logPriority($level)` (class and instance)
- `$obj->logSettings()`
- `$obj->notImplemented()`
- `$obj->report([$level])`
- `$obj->reportAll([$level])`
- `$obj->trace([$level])`
- `$obj->warnings()`

### Cleanup

Inherited from `Mail::Reporter`:

- `$obj->DESTROY()`

## Diagnostics

- `Error: Decoder for transfer encoding $type does not work: $@` — Compilation of the required decoder failed.
- `Warning: No decoder for transfer encoding $type.` — No implementation exists for the specified transfer encoding.
- `Error: Package $package does not implement $method.` — Required method missing in the package (fatal).

## See Also

- [Mail::Message](http://localhost/phpMan.php/perldoc/Mail%3A%3AMessage/markdown)
- [Mail::Box](http://localhost/phpMan.php/perldoc/Mail%3A%3ABox/markdown)
- [Mail::Reporter](http://localhost/phpMan.php/perldoc/Mail%3A%3AReporter/markdown)
- Part of Mail-Message distribution version 3.012 (built 2022-02-11). Website: [http://perl.overmeer.net/CPAN/](http://perl.overmeer.net/CPAN/)
- License: Copyright 2001-2022 Mark Overmeer. Same terms as Perl itself. See [http://dev.perl.org/licenses/](http://dev.perl.org/licenses/)