---
name: "Courriel::Header::ContentType"
section: "3pm"
platform: "linux"
package: "libcourriel-perl"
version: "0.49-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Courriel::Header::ContentType"
---

# Courriel::Header::ContentType(3pm)

The content type for an email part

## NAME

Courriel::Header::ContentType - The content type for an email part

## VERSION

version 0.49

## SYNOPSIS

```
    my $ct = $part->content_type();
    print $ct->mime_type();
    print $ct->charset();
    my %attr = $ct->attributes();
    while ( my ( $k, $v ) = each %attr ) {
        print "$k => $v\n";
    }
```

## DESCRIPTION

This class represents the contents of a "Content-Type" header attached to an email part. Such headers always include a mime type, and may also include additional information such as a charset or other attributes.

Here are some typical headers:

```
  Content-Type: text/plain; charset=utf-8
  Content-Type: multipart/alternative; boundary=abcdefghijk
  Content-Type: image/jpeg; name="Filename.jpg"
```

## API

This class supports the following methods:

### Courriel::Header::ContentType-\>new\_from\_value( ... )

This takes two parameters, `"name"` and `"value"`. The `"name"` is optional, and defaults to "Content-Type".

The `"value"` is parsed and split up into the mime type and attributes.

### Courriel::Header::ContentType-\>new( ... )

This method creates a new object. It accepts the following parameters:

- •

  name

  This defaults to 'Content-Type'.

- •

  value

  This is the full header value.

- •

  mime\_type

  A string like "text/plain" or "multipart/alternative". This is required.

- •

  attributes

  A hash reference of attributes from the header, such as a boundary, charset, etc. The keys are attribute names and the values can either be strings or Courriel::HeaderAttribute objects. Values which are strings will be inflated into objects by the constructor.

  This is optional, and can be an empty hash reference or omitted entirely.

### $ct-\>name()

The header name, usually "Content-Type".

### $ct-\>value()

The raw header value.

### $ct-\>mime\_type()

Returns the mime type value passed to the constructor. However, this value will be in all lower-case, regardless of the original casing passed to the constructor.

### $ct-\>charset()

Returns the charset for the content type, which will be the value found in the `"attributes"`, if one exists.

### $ct-\>attributes()

Returns a hash (not a reference) of the attributes passed to the constructor.

Attributes are Courriel::HeaderAttribute objects.

The keys of the hash are all lower case, though the original casing is preserved in the `"name()"` returned by the Courriel::HeaderAttribute object.

### $ct-\>is\_binary()

Returns true unless the attachment looks like text data. Currently, this means that is has a charset defined and the charset is not "binary".

### $ct-\>attribute($key)

Given a key, returns the named Courriel::HeaderAttribute object. Obviously, this value can be `"undef"` if the attribute doesn't exist. Name lookup is case-insensitive.

### $ct-\>attribute\_value($key)

Given a key, returns the named attribute's value as a string. Obviously, this value can be `"undef"` if the attribute doesn't exist. Name lookup is case-insensitive.

The attribute is a Courriel::HeaderAttribute object.

### $ct-\>as\_header\_value()

Returns the object as a string suitable for a header value (but not folded). Note that this uses the original casing of the mime type as passed to the constructor.

## EXTENDS

This class extends Courriel::Header.

## ROLES

This class does the `"Courriel::Role::HeaderWithAttributes"` role.

## SUPPORT

Bugs may be submitted at \<https://github.com/houseabsolute/Courriel/issues\>.

I am also usually active on IRC as 'autarch' on `"irc://irc.perl.org"`.

## SOURCE

The source code repository for Courriel can be found at \<https://github.com/houseabsolute/Courriel\>.

## AUTHOR

Dave Rolsky \<autarch@urth.org\>

## COPYRIGHT AND LICENSE

This software is Copyright (c) 2021 by Dave Rolsky.

This is free software, licensed under:

```
  The Artistic License 2.0 (GPL Compatible)
```

The full text of the license can be found in the *LICENSE* file included with this distribution.
